c++ - 委托构造函数不能有其他内存初始化器 - 错误
问题描述
我正在尝试在下面的代码中做类似的事情。我收到了来自 VS 的问题标题中的错误。谁能告诉我怎么了?
class A
{
public:
int x;
A(int x = 15)
{
this->x = x;
}
};
class B : public A
{
public:
int a,b,c;
B(int a, int b, int c)
{
this->a = a;
this->b = b;
this->c = c;
}
B(int a, int b, int c, int x) : A(x), /*here is error*/B(a,b,c)
{
}
};
解决方案
在您的 4 参数构造函数中B
,您不能构造基类A
,然后委托给另一个构造函数。其他构造函数也会构造A
,可能会造成各种破坏。
您要么需要复制B
's 成员的初始化,将它们放在辅助函数中,要么从 3 参数函数委托给 4 参数函数(为传递给构造函数的第 4 个参数提供正确的值为A
)。
B(int a, int b, int c): B(a, b, c, 15)
{
}