我想我不了解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;
然后代码编译。括号的存在/不存在如何改变事物?我之前遇到过这种情况,从未理解发生了什么。发生了什么事?
答案 0 :(得分:2)
因为window win();
是函数的声明,不带参数并返回window
。 (因此错误表示没有window (&)()
的匹配调用,即该类型。)
这被称为“最令人烦恼的解析”。