Ссылка Objective C на объявление указателя, получающее ошибку - PullRequest
1 голос
/ 02 мая 2011

У меня было это объявление.

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

Я пробовал также с RSEvent**, но я получаю эту ошибку 2 раза

Expected ')' before RSEvent

Почему это так.

Ответы [ 2 ]

5 голосов
/ 02 мая 2011

Objective-C является надмножеством языка C и не имеет ссылок.Если вы хотите использовать ссылки в стиле C ++ в Objective-C, вы должны скомпилировать их как Objective-C ++ (как и следовало ожидать, Objective-C ++ является надмножеством C ++).Используйте расширение .mm для автоматического использования Objective-C ++ в Xcode.

Если рассматриваемый метод является публичным API, который будет использоваться из Objective-C, я настоятельно рекомендую использовать указатель науказатель (RSEvent**) вместо ссылки на указатель.Использование Objective-C ++ в заголовке «заражает» клиентов Objective-C ++ (если вы не очень осторожны).Objective-C ++ занимает много больше времени для компиляции этого Objective-C, и вы в конечном итоге столкнетесь с неизбежной несовместимостью C и C ++.Стандартная практика - по возможности скрывать Objective-C ++ от общедоступных API.

2 голосов
/ 02 мая 2011

Лично у меня никогда не было большого успеха в 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...