C에서 멤버 함수 포인터를 전달하는 방법
멤버 함수 포인터를 허용하는 함수에 클래스 멤버 함수를 전달할 때 필수입니다. 객체에 대한 포인터와 함수에 대한 포인터를 모두 제공합니다.
주어진 예에서 MenuButton::SetButton() 함수에는 특정 서명이 있는 함수 포인터가 필요합니다. 멤버 함수를 전달하려면 개체 포인터(this)와 멤버 함수 포인터를 모두 제공해야 합니다. 이는 MenuButton::SetButton()을 다음과 같이 수정하여 달성할 수 있습니다.
template <class object> void MenuButton::SetButton(int xPos, int yPos, LPCWSTR normalFilePath, LPCWSTR hoverFilePath, LPCWSTR pressedFilePath, int Width, int Height, object *ButtonObj, void (object::*ButtonFunc)()) { BUTTON::SetButton(xPos, yPos, normalFilePath, hoverFilePath, pressedFilePath, Width, Height); this->ButtonObj = ButtonObj; this->ButtonFunc = ButtonFunc; }
이제 SetButton() 함수는 개체 포인터와 함수 포인터를 모두 매개 변수로 사용합니다.
In testMenu 클래스에서 멤버 함수는 다음과 같이 전달될 수 있습니다.
testMenu::testMenu() :MenuScreen("testMenu") { x.SetButton(100,100,TEXT("buttonNormal.png"), TEXT("buttonHover.png"), TEXT("buttonPressed.png"), 100, 40, this, &testMenu::test2); draw = false; }
이는 필요한 객체와 멤버 함수 포인터를 제공합니다. SetButton() 함수를 사용하면 나중에 멤버 함수를 올바르게 호출할 수 있습니다.
위 내용은 C 멤버 함수 포인터를 올바르게 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!