0

我想我对 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;

然后代码编译。括号的存在/不存在如何改变事情?我以前遇到过这种情况,从来不明白发生了什么。发生了什么?

4

1 回答 1

2

因为window win();是一个不带参数并返回一个函数的声明window。(因此错误说没有匹配的调用window (&)(),就是那种类型。)

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

于 2010-07-22T16:03:00.330 回答