没有用于调用'Gtk :: Main :: run(window(&)())的匹配函数

时间:2010-07-22 15:48:35

标签: c++ gtk gtkmm parentheses

我想我不了解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 个答案:

答案 0 :(得分:2)

因为window win();是函数的声明,不带参数并返回window。 (因此错误表示没有window (&)()的匹配调用,即该类型。)

这被称为“最令人烦恼的解析”。