委托的构造函数不能具有其他mem初始化程序-错误

时间:2019-05-27 21:10:45

标签: c++ constructor delegates

我正在尝试执行以下代码中的操作。我在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)
    {

    }
};

1 个答案:

答案 0 :(得分:3)

B的4参数构造函数中,您无法构造基类A,然后委托给另一个构造函数。其他构造函数也会构造A,可能会造成各种破坏。

您将需要复制B成员的初始化,将其放入帮助函数中,或将3参数函数委托给4参数函数(为传递给A的构造函数的第四个参数。

B(int a, int b, int c): B(a, b, c, 15)
{
}