Tôi đang cố chuyển một hàm thành viên trong một lớp tới một hàm nhận một con trỏ lớp hàm thành viên. Vấn đề tôi đang gặp là tôi không chắc chắn làm thế nào để làm điều này đúng cách trong lớp bằng cách sử dụng con trỏ này. Có ai có đề xuất?Làm thế nào để bạn vượt qua một con trỏ hàm thành viên?
Đây là một bản sao của lớp đó là đi qua các hàm thành viên:
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;
}
};
Chức năng x.SetButton (...) được chứa trong một lớp học, trong đó "đối tượng" là một bản mẫu.
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;
}
Nếu có ai có lời khuyên nào về cách tôi có thể gửi đúng chức năng này để tôi có thể sử dụng sau này.
'Một con trỏ đến lớp' - đó có phải là' Con trỏ tới đối tượng' không? – Vorac
Cảm ơn rất nhiều. Không thể tìm ra rằng cú pháp là một cái gì đó như ((ButtonObj) -> * (ButtonFunc))() – nathanesau