多重继承:菱形,派生子类中的构造函数

时间:2015-07-27 18:21:26

标签: c++

我有以下类结构:

  A
 / \* both virtual
B   C
 \ /
  D

每个类都需要一个带有3个参数的构造函数,它们如下所示:

A::A(int a, int b, int c) 
{
  //use a,b,c
  //some memory allocation
}

B::B(int a, int b, int c) :
    A(a,b,c)
{
  //some memory allocation
}

C::C(int a, int b, int c) :
    A(a,b,c)
{
  //some memory allocation
}

所以我只是将初始化值传递给A,因为A是唯一一个处理它们的人。

所以,在尝试为D编写构造函数时没有遇到问题。 我有以下内容:

D::D(int a, int b, int c) :
   A(a,b,c),
   B(a,b,c),
   C(a,b,c) // ERROR AT THIS LINE
{
   // some memory allocation
}
由于B和C虚拟继承自A,钻石形状问题应该解决吧? 但是我收到了一些错误消息,如

undefined reference to 'VTT for D'

我做的事情基本上是错误的吗?如果需要,我可以发布更多代码,例如完整的类结构,或者如果我的错误没有显示在这些代码片段中。

0 个答案:

没有答案