2010-07-22 3 views
0

나는 ++ C에 대해 뭔가 이해하지 못하는 것 같아 :은 Gtk :: 홈페이지 '에 전화 :: 실행에 대한 일치 기능 없음 (창()())

#include "window.h" 

int main(int argc, char* argv[]) { 
    Gtk::Main kit(argc, argv); 
    window win(); 
    Gtk::Main::run(win); 

    return EXIT_SUCCESS; 
} 
:이 코드가

'window'는 빈 생성자를 사용하여 Gtk :: Window에서 상속받은 클래스입니다. 내가 선을 변경하는 경우, 그러나

no matching function for call to ‘Gtk::Main::run(window (&)()) 

: :이 코드를 컴파일 할 때이 오류를 얻을

window win(); 

window win; 

에 다음 코드를 컴파일합니다. 어떻게 괄호의 존재/부재가 사물을 변화 시키는가? 나는 전에이 문제에 뛰어 들어서 계속 진행되고있는 일을 결코 이해하지 못했습니다. 무슨 일이야?

답변

2

window win();은 매개 변수를 사용하지 않고 window을 반환하는 함수의 선언이기 때문에. (그러므로 해당 유형이 일치하지 않는 window (&)()에 대한 호출을 말합니다.)

이 코드를 "Most Vexing Parse"라고합니다.

+0

와우. Java/C# 배경에서 이상하게 생겨납니다. 설명해 주셔서 감사합니다. – Jrop

+0

@Jrop : 예, 어두운 구석이 있습니다. 문제 없어. – GManNickG