为什么输出显示错误
Why output is showing errors
这是一个关于多重继承的菱形树问题的代码据我所见,这段代码很酷,但它在编译时显示了一些错误..帮我找出错误
#include<iostream>
using namespace std;
class A //A Diamond tree problem
{
int x;
public:
A(int i) { x = i; }
void print() { cout << x; }
};
class B: virtual public A
{
public:
B():A(10) { }
};
class C: virtual public A
{
public:
C():A(20) { }
};
class D: public B, public C{
};
int main()
{
D d;
d.print();
return 0;
}
看到错误会很有用:
In constructor ‘D::D()’:
error: no matching function for call to ‘A::A()’
使用虚继承时,虚基类必须由最远的派生类初始化。在这种情况下,它是D
;因此,为了能够实例化D
,它必须初始化A
:
class D: public B, public C
{
public:
D():A(42) {}
};
或者,您可以为A
提供一个默认构造函数。声明任何构造函数将防止编译器隐式地为您生成一个。
您需要为D提供默认构造并在成员初始化列表中调用A:
class D: public B, public C{
public:
D():A(30){}
};
或者你可以提供一个默认的a构造函数
A():x(0) {}
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 程序崩溃并显示"std::out_of_range"错误
- 显示错误输出的简单数组排序程序
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- Clion显示错误,但可以使用Cmake成功构建代码
- 代码使用向量成功运行,但使用数组显示错误
- 在链表中的第 n 位插入显示分割错误
- 为什么当 vector 为空时会显示运行时错误?
- 查找显示链表时出现的错误
- SDL 映像:无法打开映像,仅显示错误消息
- 为什么将指针重新分配给 1D 数组的 char 时显示错误,但 2D 数组工作正常?
- 与clang++一起使用的VS代码在构建良好的C++文件中显示错误
- 修复转换 IP 时inet_ntoa中的 Endianess 错误显示反转值
- g 编译选项,带有-STD = C 14编译错误显示Werror = C 11 -Compat
- 加载图像约500次后,此错误显示在Visual Studio Qimage:不记忆,返回空图像
- 为什么非unicode应用程序系统语言环境使Unicode字体具有错误显示的符号字符
- 当整数变量用于在 c++ 中声明数组大小时,错误显示为"Expression must have a const value"
- 在Qt错误显示:"Fault Module Name: Qt5Cored.dll"在win 7和调试时:"segmentation fault"在CentOS Linux和Win 7中