I am trying to pass a member function within a class to a function that takes a member function class pointer. The problem I am having is that I am not sure how to properly do this within the class using the this pointer. Does anyone have suggestions?
Here is a copy of the class that is passing the member function:
class testMenu : public MenuScreen{ public: bool draw; MenuButton<testMenu> x; testMenu():MenuScreen('testMenu'){ x.SetButton(100,100,TEXT('buttonNormal.png'),TEXT('buttonHover.png'),TEXT('buttonPressed.png'),100,40,&this->test2); draw = false; } void test2(){ draw = true; } };
The function x.SetButton(…) is contained in another class, where ‘object’ is a template.
void SetButton(int xPos, int yPos, LPCWSTR normalFilePath, LPCWSTR hoverFilePath, LPCWSTR pressedFilePath, int Width, int Height, void (object::*ButtonFunc)()) { BUTTON::SetButton(xPos, yPos, normalFilePath, hoverFilePath, pressedFilePath, Width, Height); this->ButtonFunc = &ButtonFunc; }
If anyone has any advice on how I can properly send this function so that I can use it later.
To call a member function by pointer, you need two things: A pointer to the object and a pointer to the function. You need both in
MenuButton::SetButton()Then you can invoke the function using both pointers:
Don’t forget to pass the pointer to your object to
MenuButton::SetButton():