C ++错误C2512:没有适当的默认构造函数可用

时间:2014-04-12 09:40:16

标签: 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的新实例。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

如果问题不是MainWindow类成员,那么Application类有一个构造函数,它按值获取MainWindow参数。为了做到这一点,它必须创建一个窗口的副本,如果你没有复制构造函数,编译器可能正在寻找一些方法来创建这个副本。尝试:

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

相关问题