小编hal*_*hru的帖子

使用c ++方法中的函数指针调用目标c方法

我有一个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方法吗?

c++ function-pointers objective-c

3
推荐指数
1
解决办法
2688
查看次数

标签 统计

c++ ×1

function-pointers ×1

objective-c ×1