错误C2512:没有合适的默认构造函数(代码中没有使用默认的ctor)

时间:2017-12-28 16:24:57

标签: c++ default-constructor

我已经将一个新成员(Info m_info)添加到一个名为Tile的类中,并希望使用值作为Tile c'tor的一部分初始化这个新成员:

Tile::Tile(const image& myImage): m_image(myImage)
{       
    Info myInfo(1,0,VAL);
    m_info = myInfo;
}

这是Info类:

class Info 
{
public: 

    Info(bool b1, bool b1, Car c1):
        b1(b1), b2(b2), c1(c1){}

    bool b1;
    bool b2;    
    Car c1;
};

我收到错误“错误C2512:'信息':没有合适的默认构造函数”。为什么?我没有看到需要默认的c'tor,因为我正在使用带参数的可用c'tor。

1 个答案:

答案 0 :(得分:1)

Tile(const image& myImage)构造函数中,您使用其默认构造函数初始化m_info(因为Tile的{​​{3}}中没有提到它)。然后,您尝试为其分配另一个(非默认)值。

首先正确构建m_info,您需要

Tile::Tile(const image& myImage): m_image(myImage), m_info(1,0,VAL)
{       
}