[英]c++ class with objective-c friend
我有一個混合使用c ++和objective-c的應用程序。
相當多的c ++類僅僅作為從x ++應用程序的其余部分訪問底層objective-c對象的外觀。
我的問題是設計之一:objective-c類需要通過一組我更喜歡標記為私有的方法回調到c ++類 - 沒有其他c ++類(甚至不是派生類)需要搞亂這些。
但我無法將它們標記為私有,因為似乎沒有辦法讓Objective-c類方法成為c ++類的“朋友”。
我在定義__OBJC__
時考慮作弊並使用宏來將c ++方法標記為公共,但這會改變方法的修飾並導致鏈接錯誤。
還有其他人遇到過嗎?
// 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 ++對象中。 你已經需要在兩個類之間進行另一級抽象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.