問題:
class Base {
public:
Base(Base* pParent);
/* implements basic stuff */
};
class A : virtual public Base {
public:
A(A* pParent) : Base(pParent) {}
/* ... */
};
class B : virtual public Base {
public:
B(B* pParent) : Base(pParent) {}
/* ... */
};
class C : public A, public B {
public:
C(C* pParent) : A(pParent), B(pParent) {} // - Compilation error here
/* ... */
};
指定された位置で、gcc は Base() への関数呼び出し、つまりデフォルトのコンストラクターと一致しないと文句を言います。しかし、C は Base から直接継承せず、A と B を介してのみ継承します。では、なぜ gcc はここで文句を言うのでしょうか?
アイデア?ティア/ロブ