c++ - fltk1.3 有时会添加自定义小部件
问题描述
我的 Fl_Window 不会自动添加我定制的 Fl_Widget ......但只是有时。下面是它的工作原理:
Fl_Window 会自动添加这个 Fl_Widget:
//Menu version 1
class Menu : public Fl_Menu_Bar
{
public:
Menu(int x, int y, int w, int h, const char* l=0)
: Fl_Menu_Bar(x, y, w, h, l) {}
//...
};
//...
Fl_Window不会自动添加这个 Fl_Widget:
//Menu version 2
class Menu : public Fl_Menu_Bar
{
public:
Menu()
: Fl_Menu_Bar(0,0,800,30) {}
//...
};
//...
这是我运行它的方式:
版本 1
//main
Fl_Window win(800,600);
//This will be added automatically
Menu m1(0,0,800,30);
win.show();
win.end();
return Fl::run();
//...
第 2 版
//main
Fl_Window win(800,600);
//This will not be added automatically.
Menu m2();
win.show();
win.end();
return Fl::run();
//...
要编译(我使用的是 ubuntu),我使用
g++ main.cpp Menu.cpp -lfltk -lfltk_images
为什么我的菜单的版本 1 自动添加到win中,而不是版本 2?特别是,我怎样才能将我的类对象添加到 Fl_Window 而不管其构造函数的外观如何?
文档中提到了这一点,但似乎差异仅在使用 FLUID 时才相关(我不是)。
解决方案
我隐约记得这是一些特殊的 C++ 行为:如果您使用默认构造函数,请不要在变量声明中指定括号(因为这有一些特殊含义),换句话说,而不是:
Menu m2();
写吧:
Menu m2;