C++ 코드에서 C 라이브러리에 종속되어 있습니다. 이 C 라이브러리는 3 개의 인수로 콜백을 정의 할 수있게 해준다. 예 :C++의 정적 멤버 함수가 정적이 아닌 참조에 액세스해야합니다.
file.c 이것은 내가에 콜백으로 직접 멤버 함수를 통과 할 수 없기 때문에
는 C에서#ifdef __cplusplus
extern "C"{
#endif
typedef void(*callback)(argument* 1, argument* 2, argument* 3);
...
void set_callback(ARG1, callback name_of_callback);
...
++ 라이브러리 내가, 내가이 콜백 클래스의 멤버 함수가되고 싶어요 개발하고 있어요 C 라이브러리 정적 함수를 콜백으로 만들었고이 정적 함수 안에 클래스 객체에 대한 참조를 갖고 작업을 수행하는 멤버 함수를 호출하려고합니다.
이제 내 정적 함수는 C 라이브러리에서 지정한 3 개의 인수가 있어야하므로 정적 함수 내에서 클래스의 개체에 대한 참조를 얻는 방법을 찾지 못한다. . I의 예하고 싶어 :
에서 MyClass.h :
class MyClass:
public:
MyClass();
void my_function(argument*1, argument* 2, argument* 3);
static void my_callback(argument* 1, argument* 2, argument*3);
인 MyClass.cpp :
MyClass::MyClass(){
set_callback(ARG1, my_callback);
}
void MyClass::my_function(argument*1, argument* 2, argument* 3){
/* Do something */}
void MyClass::my_callback(argument* 1, argument* 2, argument*3){
Object->my_function(1, 2, 3);
}
정적 내가 할 수 원하는대로 클래스 멤버를 설정하지하는 이유 테스트 목적으로이 클래스의 객체를 만들고 파괴하고 테스트 내에서 객체의 상태를 제어합니다.
g ++ 및 gcc를 사용하고 있습니다. 누군가 도움을 얻을 수 있기를 바랍니다. 미리 감사드립니다.
'set_callback' 호출이 나중에 콜백에 전달 된 인수 중 하나를 제공하는 것처럼 보입니까? MyClass *를 해당 매개 변수를 통해 전달하십시오. –