нет соответствующей функции для вызова ‘Gtk :: Main :: run (window (&) ()) - PullRequest
0 голосов
/ 22 июля 2010

Полагаю, я чего-то не понимаю в C ++:

У меня есть этот код:

#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;

затемкод компилируется.Как наличие / отсутствие скобок меняет положение вещей?Я сталкивался с этим раньше и никогда не понимал, что происходит.Что происходит?

1 Ответ

2 голосов
/ 22 июля 2010

Потому что window win(); - это объявление функции, которая не принимает параметров и возвращает window.(Отсюда и ошибка, сообщающая о том, что нет соответствующего вызова для window (&)(), который относится к этому типу.)

Это известно как "Наиболее разборчивый анализ".

...