C++ 初始值设定项列表中没有合适的默认构造函数可用错误

C++ 初始值设定项列表中没有合适的默认构造函数可用错误,c++,visual-c++,inheritance,constructor,initializer-list,C++,Visual C++,Inheritance,Constructor,Initializer List,由于某些原因,即使使用成员初始值设定项,也会出现无默认构造函数错误。我做错了什么 一个最小的例子 a、 cpp a、 h b、 cpp b、 h 您的b中有两个a对象:一个称为ao,是成员变量,另一个是继承自的b。您已经在初始化器列表中显式初始化了ao,但没有初始化b的父级。您可以通过在ao(1,2,3)之前的初始值设定项列表中插入a(4,5,6),来完成此操作您没有显式初始化基a,只初始化成员。 #include "a.h" a::a(int x, int y, int z):x(x),y

由于某些原因,即使使用成员初始值设定项,也会出现无默认构造函数错误。我做错了什么

一个最小的例子

a、 cpp

a、 h

b、 cpp

b、 h


您的
b
中有两个
a
对象:一个称为
ao
,是成员变量,另一个是继承自的
b
。您已经在初始化器列表中显式初始化了
ao
,但没有初始化
b
的父级。您可以通过在
ao(1,2,3)
之前的初始值设定项列表中插入
a(4,5,6),
来完成此操作

您没有显式初始化基
a
,只初始化成员。
#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;
};
#include "b.h"


b::b()
    :ao(1,2,3)
{
}
#include "a.h"

class b: public a
{
public:
    b();

private:
    a ao;
};