2

このような継承ツリーに問題はありますか:

Parent ---- Subject
|         /
|        /
Child --/

またはコードで:

class Subject
{
public:
    void AddObserver( Observer *aObserver );
protected:
    ObserversList mObserversList;
};

class Parent: public Object,
              public virtual Subject
{
};

class Child: public Parent,
             public virtual Subject
{
};
4

1 に答える 1

1

コンパイルに関しては、この種の継承に問題はありません。となるベースはどちらChildvirtual受け継がれているので。

知っておかなければならない唯一のことは、の構築中は、構築 Parent()の順序の後に がSubject()続くということObject()です。にも同じことが当てはまりChild()ます。順番は、、、とSubject()なりObject()ますParent()

于 2012-11-03T03:45:05.740 に答える