Я постоянно смешиваю C ++ и Obj-C. Экземпляр класса Obj-C отличается от экземпляра C ++. Экземпляр класса C ++ имеет this
. Там нет self
. Экземпляр класса Obj-C имеет self
. Подробнее об этом можно прочитать здесь:
Разница в ч / б Цель С и С ++ это?
Исходя из того, что вы написали, у вас есть класс C ++ Aaccessactorios
. Не ясно, кто определил Sharebutton
. Если он находится в классе C ++, то вы бы назвали его
this->Sharebutton();
или просто
Sharebutton();
Если Sharebutton
принадлежит классу Obj-C, то вам нужно, чтобы C ++ либо имел указатель на экземпляр класса Obj-C, либо передавал его в функцию. Примером последнего будет:
void Aaccessactorios::Shareoption(ObjCClassObj *obj) {
[obj Sharebutton];//ios
}
В этой ссылке на код вы можете видеть, что они на самом деле делают первое.
class IOSMediaPlayerController
{
public:
IOSMediaPlayerController();
~IOSMediaPlayerController();
void startPlayback();
void stopPlayback();
void callbackFunc();
#if PLATFORM_IOS
IOSMediaPlayerControllerObj *playerObj;
#endif
};
Здесь вы можете видеть, что playerObj
является ссылкой (указателем) на объект Obj-C. Это создано в конструкторе с этим
IOSMediaPlayerController::IOSMediaPlayerController()
{
#if PLATFORM_IOS
playerObj = [[IOSMediaPlayerControllerObj alloc] init];
#endif
}
И затем вызывается
void IOSMediaPlayerController::startPlayback()
{
#if PLATFORM_IOS
[playerObj startPlayback];
#endif
}
Обратите внимание, что пример кода не вызывает self
, он вызывает созданный конструктором экземпляр playerObj
.