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