我有一個C++類需要調用使用一個指向方法的目標C方法的函數指針的目標C的方法。此方法返回void,並接受一個類型爲'status'的參數,其中status是一個簡單的整數枚舉。調用使用從C++方法
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方法嗎?
後的狀態定義,我猜測,但嘗試通過引用傳遞狀態 – makc
我向帖子添加了狀態定義。另外,我試圖通過引用來傳遞它,但那也沒有效果。我也有同樣的問題。 – halfwaythru
@halfwaythru您的函數原型是錯誤的 - 請參閱我的答案。 – 2013-05-14 18:44:49