C++ 错误 C2512 : no appropriate default constructor available

标签 c++ visual-c++ constructor syntax-error instance

我有一个没有默认构造函数的名为 MainWindow 的类。我有一个名为 Application 的类,它的构造函数使用 MainWindow 的实例作为参数。我得到一个

 Error C2512, "no appropriate default constructor available" 

在类 Application 的构造函数的定义中。

构造函数代码如下:

Application::Application(HINSTANCE hInstance, MainWindow mainWindow) {...}

我正在像这样创建 Application 的实例:

MainWindow window(1000, 1000, false, "test");
Application program(Instance, window);

为什么会出现此错误?我没有尝试使用默认构造函数创建 MainWindow 的新实例。

最佳答案

似乎类 Application 有一个无法创建的 MainWindow 类型的数据成员。否则不清楚为什么类Application的构造函数有参数MainWindow mainWindow。我认为它用于将其分配给类的数据成员。

您可以使用 ctor-initializer。例如,如果 Application 类确实有一个 MainWindow 类型的数据成员(将其命名为 m_window),那么您可以按以下方式编写构造函数

Application::Application(HINSTANCE hInstance, MainWindow mainWindow) : m_window( mainWindow )
{
   //...
}

关于C++ 错误 C2512 : no appropriate default constructor available,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23028691/

相关文章:

c++ - Poco C++ HTTPResponse 如何获取响应的整个 header 映射?

c++ - 无法匹配普通的正则表达式

java - 不同类的 Swing 组件

c++ - 您对大型项目的首选 C/C++ header 策略?

c++ - 链接 : fatal error LNK1561: entry point must be defined ERROR IN VC++

c++ - MFC中获取最近文件列表的方法

c++ - 具有可变数量类型的模板

java - Java中构造函数的调用

python - 如果 YAML 中存在 '!',如何使用 PyYAML 解析 YAML

c++ - 为什么 gcc 提示 "declaration of ' foo' 隐藏了之前的调用 [-Werror=shadow]”