Objective-C引用指针声明获取错误

时间:2011-05-02 14:34:30

标签: objective-c

我有这个声明。

- (BOOL)getNHPData:(REMOTE_MESS_ID)msgId withEvent:(RSEvent*&)pEvent;

我尝试使用RSEvent**,但我收到此错误2次

Expected ')' before RSEvent

为什么会这样。

2 个答案:

答案 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
}