我在使用隐藏/显示和附加c ++函数时遇到了麻烦

时间:2015-11-12 00:05:19

标签: c++ hide show

我正在开发一个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();
}

1 个答案:

答案 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,其中hideshowFl_Window的公开成员,但是Splash_screenInstructions_screen私下继承它,使hideshow只能由这些类本身访问。

    确保在类定义中有一些效果

    class Instructions_screen : public Fl_Whatever_Window { /* ... */ }
    

    因为没有public限定符,默认情况下继承将是私有的。