由于某些原因,即使我使用的是成员初始化程序,我也会收到无默认构造函数错误。我做错了什么?
一个最小的例子,
a.cpp
#include "a.h"
a::a(int x, int y, int z):x(x),y(y),z(z)
{
}
A.H
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;
};
答案 0 :(得分:3)
您的b
中有两个a
个对象:一个名为ao
,是一个成员变量,另一个是继承自b
的对象。您已在初始化列表中明确初始化ao
,但您尚未初始化b
的父级。您可以通过在a(4,5,6),
之前的初始值设定项列表中插入ao(1,2,3)
来完成此操作。