c++ - 委托(delegate)构造函数不能有其他内存初始化器 - 错误

标签 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)
    {

    }
};

最佳答案

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

您需要复制 B 成员的初始化,将它们放在辅助函数中,或者从 3 参数函数委托(delegate)给 4 参数函数(提供适当的传递给 A 的构造函数的第四个参数的值。

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

关于c++ - 委托(delegate)构造函数不能有其他内存初始化器 - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56332490/

相关文章:

ios - 强烈提及委托(delegate)

c++ - 类的多重定义

c++ - 排序直到我们有排序数组的最低一半

c++ - 关于复制构造函数和指针

c++ - operator= 在我的自定义字符串类中不能正常工作

WPF/MVVM : Delegating a domain Model collection to a ViewModel

c++ - 处理模板中的 void 类型

c++ - 类不存在默认构造函数

c++ - 如何定义创建前一个对象的默认构造函数

java - 自动生成包装器以防止 "malicious downcast"?