我正在开发一个c ++游戏,我已经绘制了两个窗口,但是当我试图在两个窗口之间切换时,我无法弄清楚为什么我的代码不起作用。我已经创建了两个应该在屏幕之间切换的下一个按钮,但是我得到了所有show / hide函数的不合格ID错误,并且错误告诉我附加功能对于我尝试的按钮是不可访问的连接。我确信它是一个我忽视的小事,但是我们将非常感谢任何帮助!
#include "Splash_screen.h"
#include "Instructions_screen.h"
using namespace Graph_lib;
//Screens
Splash_screen* home_win;
Instructions_screen* instruct_win;
//Buttons
Button* splash_button;
Button* instructions_button;
//Functions
void cb_splash_button();
void cb_instructions_button();
int main() {
home_win = new Splash_screen{Point(100,100), 600, 500, "SSFB"};
instruct_win = new Instructions_screen{Point(100,100), 600, 500, "SSFB"};
Splash_screen.hide();
splash_button = new Button{Point{250,400},100,50,"Next",Callback(cb_splash_button)};
instructions_button = new Button{Point{540, 460}, 50, 30, "Next", Callback(cb_instructions_button)};
home_win->attach(*splash_button);
instruct_win->attach(*instructions_button);
return gui_main();
}
void cb_splash_button() {
Splash_screen.hide();
Instructions_screen.show();
}
void cb_instructions_button() {
Instructions_screen.hide();
//CHANGE LATER
Splash_screen.show();
}
答案 0 :(得分:0)
我认为在解决这两个问题之后它应该有效:
您应该将方法应用于对象,而不是其类型。
void cb_splash_button() {
home_win->hide();
instruct_win->show();
}
void cb_instructions_button() {
instruct_win->hide();
//CHANGE LATER
home_win->show();
}
您似乎正在使用FLTK,其中hide
和show
是Fl_Window
的公开成员,但是Splash_screen
和Instructions_screen
私下继承它,使hide
和show
只能由这些类本身访问。
确保在类定义中有一些效果
class Instructions_screen : public Fl_Whatever_Window { /* ... */ }
因为没有public
限定符,默认情况下继承将是私有的。