出于某种原因,即使我使用的是成员初始值设定项,我也会收到无默认构造函数错误。我做错了什么?
一个最小的例子,
a.cpp
#include "a.h"
a::a(int x, int y, int z):x(x),y(y),z(z)
{
}
啊啊
class a
{
public:
a(int x, int y, int z);
private:
int x, y, z;
};
b.cpp
#include "b.h"
b::b()
:ao(1,2,3)
{
}
b.h
#include "a.h"
class b: public a
{
public:
b();
private:
a ao;
};
最佳答案
你的 b
有两个a
其中的对象:一个叫做ao
and 是一个成员变量,另一个是b
是继承自。您已经在初始化 ao
显式在初始化列表中,但您没有初始化 b
的 parent 。您可以通过插入 a(4,5,6),
来完成此操作在 ao(1,2,3)
之前的初始化列表中.
关于c++ - 初始化列表没有合适的默认构造函数可用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28838134/