我有一个混合使用c ++和objective-c的应用程序.
相当多的c ++类仅仅作为从x ++应用程序的其余部分访问底层objective-c对象的外观.
我的问题是设计之一:objective-c类需要通过一组我更喜欢标记为私有的方法回调到c ++类 - 没有其他c ++类(甚至不是派生类)需要搞乱这些.
但我无法将它们标记为私有,因为似乎没有办法让Objective-c类方法成为c ++类的"朋友".
我考虑过作弊并使用宏来将c ++方法标记为public __OBJC__定义,但这会改变方法的修饰并导致链接错误.
还有其他人遇到过吗?
// MyView.mm
@interface MyView : NSView {
@public
  CMyView* _cpp;
}
-(void)drawRect:(NSRect)dirtyRect {
  CGContextRef cgc = (CGContextRef)[[NSGraphicsContext currentContext]graphicsPort];
  _cpp->Draw(cgc);
}
...
// MyView.h
class CMyView {
  id _view; 
public:
  // this method should be private. It exists ONLY for the MyView obj-c class.
  void Draw(CGContextRef cdc);
};
如果必须这样做,可以将Obj-C类包装在一个与CMyView相关的C++对象中.你需要在两个类之间进行另一级抽象.
| 归档时间: | 
 | 
| 查看次数: | 2096 次 | 
| 最近记录: |