我正在嘗試混合使用C++和Objective-C,我已經做了大部分的工作,但希望在Objective-C和C++代碼之間有一個接口類。因此我想在ViewController接口中有一個持久的C++對象。將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 2010-02-14 20:33:05
我總是更喜歡不透明的指針,而不是更多的工作,但是您可以重新獲得完整的安全類型。 – 2010-02-14 20:41:11
我一直在玩這個不透明的指針,這個指針我廣泛用於C/C++包裝,但到目前爲止我還沒有看到真正的好處。你能比較這種風格(以及一些代碼顯示「不透明」是如何分配和釋放的)這裏基於void *的風格:http://robnapier.net/blog/wrapping-c-objc-20 – 2010-02-20 16:44:21