>백엔드 개발 >C++ >C에서 멤버 함수 포인터를 외부 함수에 전달하는 방법은 무엇입니까?

C에서 멤버 함수 포인터를 외부 함수에 전달하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-29 06:25:14734검색

How to Pass Member Function Pointers to External Functions in C  ?

멤버 함수 포인터를 외부 함수에 전달

멤버 함수 포인터를 외부 함수에 대한 인수로 전달하는 것은 까다로울 수 있으며, 특히 클래스 유형을 처리할 때 더욱 그렇습니다. . 이 질문은 클래스의 멤버 함수를 멤버 함수 포인터가 필요한 함수에 전달해야 하는 특정 시나리오에 중점을 둡니다.

이를 달성하려면 외부 함수에 객체에 대한 포인터와 포인터가 모두 필요합니다. 멤버 함수에 대한 포인터입니다. 주어진 코드 조각에서 외부 함수 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.