簡體   English   中英

與Objective-c朋友的c ++類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM