>776,783,784
そこを突っ込むつもりなら、D、Eはこれでも良いです。

 class D : public Awrapper {
  protected: void Func4( ){ Func1( ); }
 };
 class E : public A {
  protected: void Func5( ) { Func1( ); }
 };

>785
A〜Eが何なのかは、まず身近なコードでAとBの関係になってるものを探して、
B=C=D=Eとして考えて下さい。
で、B〜Eはありなのかと。
流石にBが論外とか言うのは>771だけだと思いますが。