C++ 试图构造它,您是否使用指针?如果是这样,请使用星号*nameorf获取对象,这是您需要使用的构造。 Fl_Window ^ | Game Interface ^ ^ | | One Player Two

C++ 试图构造它,您是否使用指针?如果是这样,请使用星号*nameorf获取对象,这是您需要使用的构造。 Fl_Window ^ | Game Interface ^ ^ | | One Player Two ,c++,class,derived-class,base-class,fltk,C++,Class,Derived Class,Base Class,Fltk,试图构造它,您是否使用指针?如果是这样,请使用星号*nameorf获取对象,这是您需要使用的构造。 Fl_Window ^ | Game Interface ^ ^ | | One Player Two Player //Main Function int main() { GameInterface MyInterface(GameInterface::WindowSizeX, GameInterface::WindowSizeY, "PO

试图构造它,您是否使用指针?如果是这样,请使用星号*nameorf获取对象,这是您需要使用的构造。
Fl_Window
 ^
 |
Game Interface
^            ^
|            |
One Player   Two Player
//Main Function
int main()
{
GameInterface MyInterface(GameInterface::WindowSizeX,
GameInterface::WindowSizeY, "PONG");
MyInterface . InitialiseMenu();                                                             

return Fl::run();                                                                           
} 
void GameInterface :: InitialiseMenu()
{
begin();

MenuTitle = new Fl_Box (400, 50, 100, 50, "Welcome to PONG");
MenuTitle -> labelcolor (FL_WHITE);
MenuTitle -> labelsize (MenuTitleTextSize);
MenuTitle -> box (FL_NO_BOX);
MenuTitle -> show();

TwoPlayerMode = new Fl_Button (400, 300, 150, 50, "Two Player Mode");
TwoPlayerMode -> callback(TwoPlayerMode_cb, this);
TwoPlayerMode -> show();

show();
}
//Define two player mode button call back function
void GameInterface :: TwoPlayerMode_cb(Fl_Widget* w,void* data )
{
((GameInterface*) data) -> TwoPlayerMode_cb_i(w);  
} 

void GameInterface :: TwoPlayerMode_cb_i(Fl_Widget* w)
{
TwoPlayerMode -> hide();
MenuTitle -> hide();
InitialiseGameObjects();

}
//Define initialise game objects
void GameInterface :: InitialiseGameObjects()
{
Fl::add_timeout(0.01, GameInterfaceUpdate_cb, this);

begin();

Ball =  new Fl_Box (400, 300, 10, 10);
Ball -> box(FL_FLAT_BOX);
Ball -> color (FL_WHITE);
Ball -> show();    

Player1Paddle = new Fl_Box(0, 300, PaddleSizeX, PaddleSizeY);
Player1Paddle -> box(FL_FLAT_BOX);
Player1Paddle -> color(FL_WHITE);
Player1Paddle -> show();

InitialBallDirectionGenerator();

BallVelocityX = InitialBallDirectionX * InitialBallSpeed;


BallVelocityY = InitialBallDirectionY * InitialBallSpeed;

//TwoPlayerModeInitialise_i();

end(); 

}
//Game Interface Class
class GameInterface : public Fl_Window
{
//Defining Public Members
public:                                                 
GameInterface(int width, int height, const char* title=0) : Fl_Window(width, height, title)     
{
color(FL_BLACK);                                                                        
show();                                                                                 
}
...
};
class TwoPlayerMode : public GameInterface 
{
...
};
OnePlayer(GameInterface base) : GameInterface(base) {
    //here you could call any additional init functions
}
class Base {
protected:
    int x;

public:
    Base(int x) : x(x) {}
    Base getBaseClass() { return *this; }
    virtual int getX() {
        return x + 1;
    }
};

class Derived : public Base {
public:
    Derived(Base b) : Base(b) {}

    Base getBaseClass() {

    }

    int getX() {
        return x;
    }
};

int main() {
    Base t(6);
    Derived d(t);
    std::cout << d.getX() << '\n'; //6

    Base y = d.getBaseClass();
    std::cout << y.getX() << '\n'; //7
}
// create a pointer to a GameInterface object
GameInterface *game;

// start one player mode
game = new OnePlayer();
game->run();

// before you change the game mode delete the current game
delete game;

// start two player mode
game = new TwoPlayer();
game->run();
int main()
{
// assuming default constructor exists, create the menu
GameSelectMenu menu;

// run the menu
menu.run();

return 0;
}
//.. Within run() function of menu class

std::string input;
std::cout << "choose a game (enter 'a' or 'b'): "
std::cin>> input;

// check input for errors
...

// run a mode depending on input
if (input == "a") startOnePlayer();
else if (input == "b") startTwoPlayer();

 // remember to delete the GameInterface object when you have finished with it if it has been initialised
if (game != NULL) delete game;

...