错误 C2512:'Building':没有合适的默认构造函数可用

Posted

技术标签:

【中文标题】错误 C2512:\'Building\':没有合适的默认构造函数可用【英文标题】:error C2512: 'Building' : no appropriate default constructor available错误 C2512:'Building':没有合适的默认构造函数可用 【发布时间】:2014-03-29 03:58:24 【问题描述】:
class Building
private:
int floor;
public:
Building(int s)  floor = s;
;

int Main()
Building twin, star;
Building BlueHouse(5), JangMi(14);

我编写了这段代码,当我构建代码时出现“错误 C2512:‘正在构建’:没有合适的默认构造函数可用’。从我开始学习 c++ 到现在才几个星期,我过得很辛苦;

【问题讨论】:

【参考方案1】:

当你写作时:

Building twin, star;

这意味着使用默认构造函数创建twinstar,因为您没有提供任何初始化程序。但是你没有定义默认构造函数,所以这是一个错误。

要解决这个问题,请添加一个默认构造函数,例如在class Buildingpublic 部分内:

Building(): floor(0) 

请注意,我在构造函数中使用了初始化变量的语法,当floor 只是一个int 时,这实际上与Building() floor = 0; 相同,但是如果您有其他类类型的成员变量,那么有区别。

或者,您可以为现有构造函数添加默认值:

Building(int s = 0): floor(s) 

【讨论】:

以上是关于错误 C2512:'Building':没有合适的默认构造函数可用的主要内容,如果未能解决你的问题,请参考以下文章

错误 C2512 没有合适的默认构造函数,即使我有一个?

错误 C2512 但我有可用的默认构造函数

error C2512: 没有合适的默认构造函数可用

复制构造函数没有合适的默认构造函数

错误 C2512:没有适当的默认构造函数可用 - 为啥在构造函数中初始化属性?

创建 std::promise<std::tuple<T>> 时出现错误 C2512(仅限 Visual Studio)