>백엔드 개발 >C++ >C에서 멤버 함수에 대한 포인터를 어떻게 호출합니까?

C에서 멤버 함수에 대한 포인터를 어떻게 호출합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-16 04:53:17457검색

How Do I Call Pointers to Member Functions in C  ?

C에서 멤버 함수에 대한 포인터 호출

C에서 멤버 함수에 대한 포인터는 객체에 대한 메서드를 동적으로 호출하는 편리한 방법을 제공합니다. 그러나 해당 구문은 어려울 수 있습니다.

멤버 함수에 대한 포인터 호출 구문

멤버 함수에 대한 포인터를 호출하려면 다음 구문이 사용됩니다.

(object->*pointer_variable)(params)

여기서:

  • 객체는 함수가 실행되는 인스턴스입니다. 호출 중입니다
  • *pointer_variable은 멤버 함수에 대한 포인터입니다
  • params는 함수에 전달되는 매개 변수입니다

구문 예

다음 코드를 고려해보세요 snippet:

typedef void (Box::*HitTest) (int x, int y, int w, int h);

for (std::list<HitTest>::const_iterator i = hitTestList.begin(); i != hitTestList.end(); ++i)
{
    HitTest h = *i;
    (box->*h)(xPos, yPos, width, height);
}

이 예에서는 HitTest 멤버 함수에 대한 포인터 목록이 반복됩니다. 각 포인터는 목록에서 가져오고 다음과 같이 상자 포인터를 제공하여 호출됩니다.

포인터 목록에 구성원 함수 추가

목록에 구성원 함수를 추가하려면 포인터의 경우 다음 구문을 사용할 수 있습니다.

list.push_back(&box->HitTest);

이 코드는 포인터를 HitTest 멤버 함수에 푸시합니다. 상자 개체를 목록에 추가합니다.

위 내용은 C에서 멤버 함수에 대한 포인터를 어떻게 호출합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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