Próbuję miksować C++ i Objective-C, zrobiłem to przez większość drogi, ale chciałbym mieć pojedynczą klasę interfejsu między kodem Objective-C i C++. Dlatego chciałbym mieć stały obiekt C++ w interfejsie ViewController.Dodawanie obiektu C++ do klasy Objective-C
To nie zabraniając deklarację „myCppFile” bez typu:
#import <UIKit/UIKit.h>
#import "GLView.h"
#import "myCppFile.h"
@interface GLViewController : UIViewController <GLViewDelegate>
{
myCppFile cppobject;
}
@end
Jednak to działa dobrze w pliku wdrażania .mm (To nie działa, ponieważ chcę cppobject utrzymują się między połączeniami)
#import "myCppFile.h"
@implementation GLViewController
- (void)drawView:(UIView *)theView
{
myCppFile cppobject;
cppobject.draw();
}
Dzięki, inne sugestie nie działały, a ja zadeklarowałem swój obiekt jako "id *", a następnie rzuciłem go we właściwy typ wszędzie, gdzie chciałem go użyć. Wydaje się, że to ten sam pomysł, ale jest o wiele czystszy, ponieważ nie muszę wykonywać wszystkich dodatkowych rzutów. – Winder
Zawsze wolałbym nieprzezroczyste wskaźniki od rzutów - może to być trochę więcej pracy, ale otrzymasz pełny zwrot bezpieczeństwa. –
Grałem z nieprzezroczystymi wskaźnikami, które używam intensywnie do pakowania C/C++, ale jak dotąd nie widziałem prawdziwej korzyści. Czy możesz porównać ten styl (wraz z kodem pokazującym, jak "nieprzezroczyste" jest przydzielane i wydawane) do stylu pustego * tutaj: http://robnapier.net/blog/wrapping-c-objc-20 –