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

编译方面,这种继承没有问题。因为来的两个基地Child都是virtual继承的。

唯一必须知道的是,在构造 Parent()时,构造顺序将Subject()遵循Object()。同样适用于Child(). 顺序将是Subject(), Object(), Parent()

于 2012-11-03T03:45:05.740 回答