멤버 함수 포인터를 외부 함수에 전달
멤버 함수 포인터를 외부 함수에 대한 인수로 전달하는 것은 까다로울 수 있으며, 특히 클래스 유형을 처리할 때 더욱 그렇습니다. . 이 질문은 클래스의 멤버 함수를 멤버 함수 포인터가 필요한 함수에 전달해야 하는 특정 시나리오에 중점을 둡니다.
이를 달성하려면 외부 함수에 객체에 대한 포인터와 포인터가 모두 필요합니다. 멤버 함수에 대한 포인터입니다. 주어진 코드 조각에서 외부 함수 MenuButton::SetButton()은 객체에 대한 포인터를 ButtonObj로 사용하고 멤버 함수에 대한 포인터를 ButtonFunc로 사용합니다.
해결책에는 객체 포인터와 멤버를 모두 전달하는 것이 포함됩니다. MenuButton::SetButton()에 대한 함수 포인터입니다. 제공된 testMenu 클래스에서 생성자는 x.SetButton(...)을 호출하고 이를 개체 포인터로 전달하고 test2를 멤버 함수 포인터로 전달합니다. 이렇게 하면 외부 함수가 호출될 때 객체와 해당 멤버 함수 모두에 액세스할 수 있습니다.
수정된 코드는 다음과 같습니다.
testMenu::testMenu() :MenuScreen("testMenu") { x.SetButton(100,100,TEXT("buttonNormal.png"), TEXT("buttonHover.png"), TEXT("buttonPressed.png"), 100, 40, this, &testMenu::test2); draw = false; }
외부 함수 MenuButton::SetButton 내 (), 개체 포인터와 멤버 함수 포인터는 다음 구문을 사용하여 멤버 함수를 호출하는 데 사용할 수 있습니다. ((ButtonObj)->*(ButtonFunc))();.
위 내용은 C에서 멤버 함수 포인터를 외부 함수에 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!