объект класса c ++ как переменная экземпляра в классе obj-c - PullRequest
2 голосов
/ 06 апреля 2011

У меня есть класс C ++ IPoint и я хочу использовать экземпляр IPoint в качестве переменной экземпляра для класса obj-c.Но при компиляции он выдает ошибку: «ожидаемый список спецификаторов-спецификаторов перед« точкой »» Однако я включил нужный заголовок «IPoint.h».

Но когда я использую объект cpp вмой класс, просто инициализируя его, не делая его переменной экземпляра, он работает.

Существует определенное требование, чтобы объект cpp сохранялся как переменная экземпляра, поскольку в моем проекте это требуется в дальнейшем, если бы мог быть способ заставить его работать, как написать обертку для объекта или что-то еще,пожалуйста, помогите мне!

Ответы [ 2 ]

4 голосов
/ 06 апреля 2011

Если вы хотите иметь возможность #import вашего интерфейса класса Objective C в код Objective C и Objective C ++, вы можете использовать #ifdef, чтобы объявить переменную экземпляра как void * для первого:

@interface MyClass : NSObject {
    #ifdef __cplusplus
    IPoint *point;
    #else
    void *point;
    #endif
}

К сожалению, это означает, что вам нужно будет управлять временем жизни объекта C ++ вручную, создавая и удаляя его с помощью new и delete в ваших методах init и dealloc Objective-C ++ соответственно.

1 голос
/ 06 апреля 2011

Заголовок для класса Objective-C с классом ivar C ++ должен быть скомпилирован как Objective-C ++.Убедитесь, что вы используете расширение .mm вместо расширения .m в имени файла с исходным кодом или установите файл для компиляции как Objective-C ++ в Xcode.

...