次の行では、クラス A が基本クラスで、クラス B と C によって継承されます。クラス D は B と C の両方から継承されます。さらに、D のコンストラクターは B、C、および A のコンストラクターを呼び出します。B と C が A を次のように継承するためです。 virtual であるため、A のコンストラクターを直接呼び出すことはできません (同じ呼び出しは第 3 世代を介して行う必要があるため)。
私の質問は、クラス B のオブジェクトを作成したい場合、A は仮想的に継承されるため、A のコンストラクターを呼び出す方法はありますか (初期化に使用する変数 v1 と v2 を渡すため)?
class A {
   int a1,a2;
   A() {
   }
   A(int v1,v2) {
      a1 = v1;
      a2 = v2;
   }
};
class B:virtual public A {
   int b1,b2;
   B() {
   }
   B(int v1,v2) {
      b1 = v1;
      b2 = v2;
   }
};
class C:virtual public A {
   int c1,c2;
   C() {
   }
   C(int v1,v2) {
      c1 = v1;
      c2 = v2;
   }
};
class D:public B,public C {
   int d1,d2;
   D() {
   }
   D(int v1,v2):B(v1,v2),C(v1,v2),A(v1,v2)
   {
      d1 = v1;
      d2 = v2;
   }
};