【发布时间】:2014-10-01 13:27:33
【问题描述】:
我在objective-c++ (.mm) 文件中实现了一个c++ 类。
此类包含一些 Cocoa 对象,例如 NSToolbar,作为(私有)成员变量。
该类应作为纯 c++ 接口公开,并可供纯 c++ 客户端使用。
换句话说,我试图将 obj-c 对象包装在 c++ 类中。
我首先想到的是在类接口中使用 void 指针
然后在需要将_toolbar 视为NSToolbar 时,在类实现中解决强制转换问题。
例如我会有界面:
// NSToolbarWrapper.h
class NSToolbarWrapper {
private:
void * _toolbar;
//... rest of the class ...
}
和实施:
// NSToolbarWrapper.mm
...
ToolbarWrapper::ToolbarWrapper (...){
_toolbar = (__bridge void *)[[NSToolbar alloc] initWithIdentifier:@"My toolbar!"];
...
}
我不确定这是最聪明的方法。 在这种情况下是否有最佳做法?
【问题讨论】:
-
我发现最好的方法是在声明将暴露给纯 c++ 的类时使用 pimpl 习惯用法
标签: c++ objective-c wrapper