Я пишу интерфейс класса Objective-C++, который должен использоваться как в Objective-C, так и в Objective-C++. Проблема в том, что, поскольку он должен использоваться в Objective-C, я не могу просто использовать тип C++. Я хочу сделать это с помощью указателей, и я придумал это:
@interface SXDiff : NSObject {
@private
#ifdef __cplusplus
dtl::Diff<std::string, std::vector<std::string> > *_diff;
#else
void *_diff;
#endif
}
...
@end
Могут ли возникнуть проблемы при этом? Есть ли лучший способ сделать это?
Обратите внимание, что использование указателей предназначено только для того, чтобы размер ivar был одинаковым как в Objective-C, так и в Objective-C++. Ивар можно использовать только внутри реализации класса SXDiff
(это @private
). Реализация написана на Objective-C++.
dtl::Diff
в файле реализации, используя расширение класса. - person Joe   schedule 18.10.2011.mm
. - person Joe   schedule 18.10.2011