我目前正在開發iOS項目。爲了方便起見,我在早期的幾個小程序中分割了這些功能。該項目由Obj-C,Obj-C++和C++程序組成。現在我把所有的東西放到最終產品中,並且在Obj-C和C++之間的(我猜)兼容性方面遇到了一些奇怪的行爲。Obj-C錯誤:「期望類的指針前不合格id」
我想在obj-C++程序中初始化一個對象,該程序來自obj-C類。但是編譯OBJ-C類的頭文件時,我不斷收到錯誤:
#import <Foundation/Foundation.h>
@class AVAssetExportSession;
@interface LibraryImport : NSObject {
AVAssetExportSession * export; //Error line
NSError* movieFileErr;
}
//class methods
的成績單是這樣的:
LibraryImport.h:24:錯誤: '出口'
之前預期不合格-IDLibraryImport.h:24:error:instance variable'unnamed'has unknown size
LibraryImport.h:24:error:expected`;' 「出口」前
的調用是這樣的OBJ-C++文件:(檢測到的這裏沒有錯誤,只是覺得有什麼正相關)
LibraryImport* import = [[LibraryImport alloc] init];
最怪異的部分是,當它最初被稱爲由一個純粹的Obj-C程序,它工作得很好。但項目性質需要將調用者更改爲obj-C++。另外,當我試圖將obj-C文件更改爲obj-C++時,我得到的錯誤比以前更多,包括現有的錯誤。
這裏是讓我敲我的頭靠在牆上,在過去整整一個星期的問題:
在這種情況下,我怎麼能成功初始化此對象嗎?
這個問題與obj-C和C++之間的兼容性有關嗎?如果是這樣,是否有一個通用的解決方案或對兼容性的一些明確的解釋?
讓我知道是否需要更多信息(這是我第一次遇到這個問題,我甚至不知道從哪裏開始......)。任何見解將不勝感激。非常感謝你:-)
乾杯,
曼卡
事實上,'export'是一個C++關鍵字:http://www.parashift.com/c++-faq-lite/templates.html#faq-35.14 – 2011-03-04 10:58:12
並非總是如此。我沒有找到它,例如,在Visual Studio 2010 http://msdn.microsoft.com/en-us/library/2e6a4at9%28v=VS.100%29.aspx中,雖然IDE仍將它標記爲如果它是一個。我有點困惑。 – CygnusX1 2011-03-04 11:02:57
您是否檢查@larsmans的鏈接?這是一個關鍵字,但沒有得到很好的支持。不確定VS是否真的是最好的地方來清除有關語言標準的混淆...... – walkytalky 2011-03-04 11:16:38