クラス定義の中で関数を定義すると、
クラス定義の直後にinline付きで定義されたものとして扱われる。
つまりA_Derivはこう書いたのと同じに扱われる。
class A_Deriv : public A_Base
{
public:
void func();
};
inline void A_Deriv::func() { getB()->getA_Base(); }
ところが、この時点ではclass B;という前方宣言しかないため、
Bに関する具体的な情報がわからない。それで367のエラーになってしまう。

解決するには、A_Deriv::funcの定義をBの定義より後に回せばいい。
例えば、A.hとB.hをインクルードするcppファイルでA_Deriv::funcを定義したり、
A_BaseとBを同じヘッダで定義して、そのヘッダの一番下に
インラインでA_Deriv::funcを定義するなどの方法がある。