У меня есть следующий заголовок объектно-C++ с простым методом для возврата этого указателя.как вернуть указатель C++ в объекте-C++
@interface MyObj
{
MyCPPObj * cpp;
}
-(MyCPPObj *) getObj;
Я создал простой метод
@implementation MyObj
-(MyCPPObj *) getObj
{
return cpp;
}
Все, кажется, работает, пока я на самом деле не попробовать использовать объект в другом файле
newObj = [createdMyObj getObj];
Он жалуется: ошибка: не удается преобразовать ' objc_object * 'до' MyCPPObje * 'при инициализации.
Кажется, что метод возвращает объект объектива-c, но я специально запросил указатель C++.
MyCPPObj честный C++ класс:
class MyCPPObj
{
public:
int x;
}
Как я могу исправить это?
Где ваше объявление для 'MyCPPObj'? –
'-getObj' - очень плохое имя для метода доступа. Методы, включая слово * get *, зарезервированы для методов, возвращающих буфер байтов. В примере, который вы укажете, аксессуар должен быть назван '-cpp'. –
Это нормально, чтобы дать аксессуру другое имя, чем переменная экземпляра, но да, он не должен иметь 'get', если он не возвращает что-то по ссылке. Это должно быть просто 'obj' или' cpp' или 'cppObj' или что-то в этом роде. Кроме того, вы можете использовать синтаксис '@ property' для объявления этого свойства. http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProperties.html –