繁体   English   中英

C++多级虚拟继承编译问题

[英]C++ Multi-level virtual Inheritance compilation problem

我正在处理一个 C++ 项目,其中我正在使用多级继承。

这是我的示例代码:

class ClassA
{
public:
    ClassA(int a,int b) : sum(a + b) {}
    virtual ~ClassA() = default;

    int sum;
};

class ClassB : virtual public ClassA
{
public:
    ClassB(int a, int b, int c) : ClassA(a, b), c(c) {}

    int c;
};

class ClassC : virtual public ClassB
{
public:
    ClassC(int a,int b,int c) : ClassB(a, b, c) {}
};

int main()
{
    ClassC objC(1, 2, 3);

    std::cout << "sum=" << objC.sum << std::endl;
    std::cout << "c=" << objC.c << std::endl;
}

有人可以解释一下这段代码有什么问题吗?

错误:没有匹配的函数调用“ ClassA::ClassA()
ClassC(int a,int b,int c) : ClassB(a, b, c) {}

派生类

所有虚拟基子对象在任何非虚拟基子对象之前初始化,因此只有最派生的类调用其成员初始化列表中的虚拟基类的构造函数:

所以你的班级应该修改为:

ClassC::ClassC(int a, int b,int c):ClassA(a, b), ClassB(a, b, c) {}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM