我有一个应用程序,它是C++和ObjaveC的混合体。
相当多的C++类仅仅作为外观来访问底层Objy-C对象,从其他的X++应用程序中访问。
我的问题是一个设计:ObjuleC类需要通过一组方法来调用C++类,我喜欢将其标记为私有-没有其他C++类(甚至派生类)需要用这些方法来解决。
但我不能把它们标记为私有的,因为似乎没有一种方法可以使Obje+C类方法成为C++类的“朋友”。
我认为作弊和使用宏来标记C++方法是公开的。
__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);
};