我有這個聲明。Objective-C引用獲取錯誤的指針聲明
- (BOOL)getNHPData:(REMOTE_MESS_ID)msgId withEvent:(RSEvent*&)pEvent;
我RSEvent**
也試過,但我得到這個錯誤2次
Expected ')' before RSEvent
爲什麼會這樣。
我有這個聲明。Objective-C引用獲取錯誤的指針聲明
- (BOOL)getNHPData:(REMOTE_MESS_ID)msgId withEvent:(RSEvent*&)pEvent;
我RSEvent**
也試過,但我得到這個錯誤2次
Expected ')' before RSEvent
爲什麼會這樣。
我個人從未有過C++或OBJ-C與指針引用很成功,如果我需要那種功能,我通常只使用一個指針的指針這樣的:
some function()
{
RSEvent *pEvent = new RSEvent();
[self getNHPData:DEFAULT_MSG_ID withEbvent:&pEvent];
}
- (BOOL)getNHPData:(REMOTE_MESS_ID)msgId withEvent:(RSEvent**)pEvent
{
//Do some stuff
}
的Objective-C是一個C語言的超集,並沒有引用。如果你想在Objective-C中使用C++風格的引用,你必須編譯爲Objective-C++(正如你所期望的,Objective-C++是C++的超集)。使用.mm
擴展名在Xcode中自動使用Objective-C++。
如果有問題的方法是將從Objective-C中使用的公共API,我強烈建議使用指針指針(RSEvent**
)而不是指針引用。在標題中使用Objective-C++用Objective-C++「感染」客戶端(除非你非常小心)。 Objective-C++需要花費更多的時間來編譯該Objective-C,並且最終會遇到不可避免的C與C++不兼容問題。標準的做法是儘可能從公共API中隱藏Objective-C++。