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