编译器错误 C2512 |
您所在的位置:网站首页 › 故障代码C2555 › 编译器错误 C2512 |
编译器错误 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 |