C 클래스 멤버 함수를 C 콜백 함수로 등록
콜백 함수가 필요한 C 라이브러리로 작업할 때 등록이 필요할 수 있습니다. C 클래스 멤버 함수. 하지만 비정적 멤버 함수를 콜백으로 등록하려고 하면 컴파일러 오류가 발생합니다.
C 클래스 멤버 함수를 등록할 수 있나요?
예, 그렇습니다. 정적 멤버 함수를 사용하여 C 클래스 멤버 함수를 콜백 함수로 등록하는 것이 가능합니다.
정적 멤버 함수 접근 방식
정적 멤버 함수에는 클래스 유형의 암시적 첫 번째 매개 변수가 없습니다. 따라서 서명이 콜백 함수의 예상 유형과 일치하여 성공적으로 등록될 수 있습니다.
예
class A { public: static int e(int *k, int *j) { return 0; } }; A::A() { register_with_library(A::e); }
대체 접근 방법
int e(int *k, int *j) { A a; return a.e(k, j); } A::A() { register_with_library(e); }
struct EF { A* a; int operator()(int *k, int *j) { return a->e(k, j); } }; A::A() { EF ef = {this}; register_with_library(ef); }
접근 방식 선택은 C 라이브러리의 특정 요구 사항과 원하는 캡슐화 및 재사용성 수준에 따라 다릅니다.
위 내용은 C 클래스 멤버 함수를 C 콜백으로 등록하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!