C 클래스 멤버 함수를 C 콜백 함수로 사용
문제:
언제 C 클래스 멤버 함수를 C 라이브러리에 대한 콜백 함수로 등록하려고 하면 컴파일러에서 다음을 나타내는 오류가 발생합니다. 함수 유형이 예상 서명과 일치하지 않습니다.
질문:
답변:
1. 정적 멤버 함수 사용:
예, C 클래스 멤버 함수를 콜백 함수로 등록할 수 있지만 정적 멤버 함수여야 합니다. 정적 멤버 함수에는 A* 유형 클래스의 암시적 첫 번째 매개변수가 없으므로 해당 시그니처가 예상되는 콜백 시그니처와 일치합니다. 예:
class A { public: static int e(int *k, int *j) { return 0; } }; int main() { register_with_library(A::e); return 0; }
2. 대체 접근 방식:
또는 다음 접근 방식 중 하나를 사용할 수 있습니다.
void e_wrapper(int *k, int *j) { A().e(k, j); }
int (*ptr)(int *, int *) = &A::e; register_with_library(ptr);
위 내용은 C 클래스 멤버 함수를 C 콜백으로 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!