编译器错误 C2512

您所在的位置:网站首页 故障代码C2555 编译器错误 C2512

编译器错误 C2512

2023-10-27 13:59| 来源: 网络整理| 查看: 265

编译器错误 C2512 项目 04/03/2023

“identifier”:没有合适的默认构造函数可用

“默认构造函数”(不需要参数的构造函数)不适用于指定的类、结构或联合。 只有在未提供用户定义的构造函数的情况下,编译器才会提供默认构造函数。

如果提供一个采用非 void 参数的构造函数,并且希望允许创建不带参数的类(例如,作为数组的元素),还必须提供默认构造函数。 默认构造函数可以是一个所有参数都使用默认值的构造函数。

示例

错误 C2512 的常见原因是,定义采用参数的类或结构构造函数,然后尝试声明一个不带任何参数的类或结构的实例。 例如,下面的 struct B 声明一个需要 char * 参数的构造函数,但不是一个不采用任何参数的构造函数。 在 main 中,声明 B 的一个实例,但没有提供参数。 编译器生成 C2512 是因为它找不到 B 的默认构造函数。

// C2512.cpp // Compile with: cl /W4 c2512.cpp // C2512 expected struct B { B (char *) {} // Uncomment the following line to fix. // B() {} }; int main() { B b; // C2512 - This requires a default constructor }

可以通过为结构或类定义默认构造函数(例如 B() {})或所有参数都具有默认值的构造函数(例如 B (char * = nullptr) {})来解决此问题。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3