2011-05-02 26 views

回答

2

我個人從未有過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 
} 
5

的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++。