C++ 初始值设定项列表中没有合适的默认构造函数可用错误
由于某些原因,即使使用成员初始值设定项,也会出现无默认构造函数错误。我做错了什么 一个最小的例子 a、 cpp a、 h b、 cpp b、 hC++ 初始值设定项列表中没有合适的默认构造函数可用错误,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
您的
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;
};