10
我有一個應用程序,這是C++和objective-c的混合體。C++ class with objective-c朋友
相當多的C++類僅僅作爲從x ++應用程序的其餘部分訪問底層objective-c對象的外觀而存在。
我的問題是設計之一:Objective-c類需要通過一組方法回調到C++類中,我傾向於標記爲private - 沒有其他C++類(甚至派生類)需要與這些混在一起。
但我不能將它們標記爲私有,因爲似乎沒有辦法使C++類的Objective-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 OnPaint(CGContextRef cdc);
};
lol。一個封裝類來包裝我的wapper類。 – 2010-10-29 15:03:43
是的,這是Obj-C++的喜悅 – 2010-10-29 15:49:03
這就是現代軟件開發,編寫圖層和包裝 – Lothar 2016-02-17 09:55:58