首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++ Error C2512:没有合适的默认构造函数可用

C++ Error C2512:没有合适的默认构造函数可用
EN

Stack Overflow用户
提问于 2014-04-12 09:40:16
回答 2查看 2.8K关注 0票数 0

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

代码语言:javascript
运行
复制
 Error C2512, "no appropriate default constructor available" 

在类应用程序构造函数的定义中。

下面是构造函数的代码:

代码语言:javascript
运行
复制
Application::Application(HINSTANCE hInstance, MainWindow mainWindow) {...}

我创建的Application实例如下:

代码语言:javascript
运行
复制
MainWindow window(1000, 1000, false, "test");
Application program(Instance, window);

为什么我会有这个错误?我不想用默认构造函数创建MainWindow的新实例。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-12 09:49:44

类应用程序似乎有一个MainWindow类型的数据成员,无法创建。否则,还不清楚为什么类应用程序的构造函数具有参数MainWindow mainWindow。我认为它被用来将它分配给类的数据成员。

你可以用ctor-初始化器。例如,如果类应用程序确实具有MainWindow类型的数据成员(让将其命名为m_window),则可以使用以下方式编写构造函数

代码语言:javascript
运行
复制
Application::Application(HINSTANCE hInstance, MainWindow mainWindow) : m_window( mainWindow )
{
   //...
}
票数 1
EN

Stack Overflow用户

发布于 2014-04-12 15:35:29

如果问题不是MainWindow类成员,那么应用程序类有一个构造函数,该构造函数按值接受MainWindow参数。为了做到这一点,它必须创建一个窗口的副本,如果您没有复制构造函数,编译器可能正在寻找某种方法来创建这个副本。尝试:

应用程序::Application(hInstance hInstance,MainWindow &mainWindow) {.}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23028691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档