初始化列表没有合适的默认构造函数可用错误
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),
来完成此操作
出于某种原因,即使我使用的是成员初始值设定项,我仍收到无默认构造函数错误。我做错了什么?
一个最小的例子,
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),
来完成此操作