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

时间:2015-03-03 17:28:18

标签: c++ visual-c++ inheritance constructor 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;
};

1 个答案:

答案 0 :(得分:3)

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