The Way to Programming
The Way to Programming
Hey guys, so I’m in the middle of completing my C++ games assignment and I’ve ran into a pretty decent problem I can’t solve.
The game is complete but the problem comes with coding the menu system and the buttons.
My button class is pretty basic, it holds a texture, position and a function to point to when clicked.
void (*m_action)();
Now the problem I’ve ran into is, that works but only for functions declared inside the main method and not inside any other class.
I’m working with a
main Game Button
The main class holds the game class and the game class holds the button class.
The problem I’ve ran into is sending the button a pointer to a Game::*function rather just a *function.
I’ve tried many things to get this to work but still can’t get the button to hold a member pointer to function inside the game class.
If anyone could help I’d be eternally grateful!
I’m not sure what do you mean by ‘game class holds the button class.’, let’s suppose this means: ‘game class holds instance of a button class’ (not declaration of this class). In this case simple-sample can look like this (tested in vs2010):
class Button; class Game { Button button; public: //Function must be public, otherwise it will be impossible do something like this: "Game::Add" outside class Game! float Add(float x, float y) { return x + y; } }; class Button { public: float (Game::*pt2mfn)(float x, float y); Button() { pt2mfn = &Game::Add; } }; int _tmain(int argc, _TCHAR* argv[]) { Button btn; Game game; //Naturally we will need instance of Game class to call nonstatic, member method! std::cout<< (game.*btn.pt2mfn)(1.0f, 1.0f) << std::endl; system("pause"); return 0; }
Have a look at boost::function
and boost::bind
, they may be helpful.
Sign in to your account