我有一个名为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的新实例。
答案 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){...}