>あるいはBにAのラッパーとしての性格を持たせるのがナンセンスと言いたい。
無論 B が A のラッパーであるなら妥当であるけど、その場合↓のように
B::func1 は public にするはずですよね。(protectedもあり得るけど)

Code4:
class B {
  public: void Func2( ){ Func1( ); }
  public: void Func1( ) { m_pA->Func1( ); }
  private: A* m_pA;
};