Я пытаюсь смешивать C++ и Objective-C, я сделал это большую часть пути, но хотел бы иметь один класс интерфейса между кодом Objective-C и C++. Поэтому я хотел бы иметь постоянный объект C++ в интерфейсе ViewController.Добавление объекта C++ в Objective-C Класс
Это терпит неудачу, запрещая декларацию «myCppFile» без указания типа:
#import <UIKit/UIKit.h>
#import "GLView.h"
#import "myCppFile.h"
@interface GLViewController : UIViewController <GLViewDelegate>
{
myCppFile cppobject;
}
@end
Однако это работает только штрафом в файле реализации .mm (Это не работает, потому что я хочу cppobject сохраняться между вызовами)
#import "myCppFile.h"
@implementation GLViewController
- (void)drawView:(UIView *)theView
{
myCppFile cppobject;
cppobject.draw();
}
Спасибо, другие предложения, похоже, не сработали, и я закончил тем, что объявил свой объект как «id *», а затем применил его к правильному типу везде, где я хотел его использовать. Это похоже на ту же идею, но намного чище, так как мне не нужно делать все лишние броски. – Winder
Я всегда предпочитаю непрозрачные указатели на броски - это может быть немного больше работы, но вы получите полную защиту типа. –
Я играю с непрозрачными указателями для этого, который я широко использую для упаковки C/C++, но до сих пор я не видел реальной выгоды. Можете ли вы сравнить этот стиль (наряду с некоторым кодом, показывающим, как «непрозрачный» выделен и выпущен) в стиле на основе void * здесь: http://robnapier.net/blog/wrapping-c-objc-20 –