我有这个声明。
- (BOOL)getNHPData:(REMOTE_MESS_ID)msgId withEvent:(RSEvent*&)pEvent;
我尝试使用RSEvent**
,但我收到此错误2次
Expected ')' before RSEvent
为什么会这样。
答案 0 :(得分: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 ++。
答案 1 :(得分: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
}