我有一个c ++类需要使用指向该方法的指针调用目标c方法.此方法返回void并接受类型为"status"的参数,其中status是一个简单的整数枚举.
enum status
{
status_valid = 0,
status_invalid,
status_unknown
};
Run Code Online (Sandbox Code Playgroud)
我有像这样设置的obj-c方法的指针.指向该方法的指针也被传递给c ++类和
typedef void (*FuncPtr) (status);
FuncPtr myObjCSelectorPointer = (void (*)(status))[self methodForSelector:@selector(statusChanged: )];
cppClassInstance->setFuncPointer(myObjCSelectorPointer)
Run Code Online (Sandbox Code Playgroud)
myObjCSelectorPointer由cppClass持有,如下所示:
void cppClass::setFuncPointer(FunctPtr *ptr)
{
this->funcPtr = ptr;
}
Run Code Online (Sandbox Code Playgroud)
现在在其他地方,当我尝试调用此指针指向的方法时,如下所示:
status s;
funcPtr(s);
Run Code Online (Sandbox Code Playgroud)
方法被正确调用,但传递给方法的值将丢失.obj-c方法接收完全随机的值.当我尝试使用相同的方式在cpp类中调用方法时,它传递并接收正确的值.
我究竟做错了什么?你能不能像这样调用客观的c方法吗?