初始化列表没有合适的默认构造函数可用错误

no appropriate default constructor available error with initializer list

出于某种原因,即使我使用的是成员初始值设定项,我仍收到无默认构造函数错误。我做错了什么?

一个最小的例子,

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;
};

你的b里面有两个a对象:一个叫ao,是成员变量,另一个是b继承自.您已经在初始化程序列表中显式初始化 ao,但您没有初始化 b 的父级。您可以通过在 ao(1,2,3).

之前的初始化列表中插入 a(4,5,6), 来完成此操作