2014-04-12 5 views
0

기본 생성자가없는 MainWindow 클래스가 있습니다. 나는 Application이라는 클래스를 가지고 있으며, 생성자는 MainWindow의 인스턴스를 매개 변수로 사용합니다. 나는 Application 클래스의 생성자 정의에C++ 오류 C2512 : 적절한 기본 생성자가 없습니다.

Error C2512, "no appropriate default constructor available" 

을 얻습니다.

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

이 같은 Application의 인스턴스를 만드는거야 :

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

가 왜이 오류를받을 수 있나요

다음은 생성자의 코드인가? 기본 생성자를 사용하여 MainWindow의 새 인스턴스를 만들려고하지 않습니다.

+0

는'Application'는'MainWindow' 데이터 멤버가 있는가? 그렇다면 기본 설정이됩니다. – juanchopanza

+0

Application 개체는 어떻게 만듭니 까? 코드 게시 –

답변

1

응용 프로그램 클래스에 MainWindow 유형의 데이터 멤버가 있으며 생성 할 수없는 것으로 보입니다. 그렇지 않으면 Application 클래스의 생성자가 MainWindow mainWindow 매개 변수를 갖는 이유가 명확하지 않습니다. 나는 그것을 클래스의 데이터 멤버에 할당하는 데 사용된다고 생각한다.

ctor-initializer를 사용할 수 있습니다. 예를 들어 클래스 응용 프로그램은 실제로 형 MainWindow를의 데이터 멤버 (이 m_window 이름을하자) 문제가 더는 MainWindow를 클래스 멤버는 다음 응용 프로그램 클래스가있다 없다면 다음 생성자에게 다음과 같은 방법

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

을 쓸 수있는 경우 MainWindow 매개 변수를 값으로 취하는 생성자. 이렇게하려면 창 복사본을 만들어야합니다. 복사 생성자가 없으면 컴파일러에서이 복사본을 만들 수있는 방법을 찾고있을 수 있습니다. 시도 :

응용 프로그램 : 응용 프로그램 (HINSTANCE HINSTANCE, MainWindow를 & MainWindow를) {...}

관련 문제