Ich habe eine Anwendung, die eine Mischung aus C++ und Ziel-c ist.C++ Klasse mit objective-c Freund
Eine ganze Menge der C++ - Klassen existieren lediglich als Fassaden, um auf das zugrunde liegende objective-c-Objekt vom Rest der x ++ - Anwendung zuzugreifen.
Mein Problem ist eines der Design: Die Objective-C-Klasse muss zurück in die C++ - Klasse über eine Reihe von Methoden, die ich lieber als private markieren würde - keine andere C++ Klasse (nicht einmal abgeleitete Klassen) muss damit herumspielen.
Aber ich kann sie nicht privat markieren, da es scheint, keine Möglichkeit zu sein, objektive Klassenmethoden "Freunde" einer C++ - Klasse zu machen.
Ich überlegte, zu betrügen und Makros zu verwenden, um die C++ - Methoden als public zu markieren, wenn __OBJC__
definiert ist, aber das die Dekoration der Methode ändert und zu Verbindungsfehlern führen würde.
jemand anderes dies angetroffen?
// 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. eine Wrapper-Klasse, um meine Wapper-Klasse zu umhüllen. –
Yup, das ist die Freude von Obj-C++ –
Das ist moderne Softwareentwicklung, Schreiben von Layern und Wrappern – Lothar