我爲C++編寫了一個Objective-C包裝器,所以在主文件中,我只需要使用C++代碼。在一個測試項目中,它的功能完美無缺,所以我想在一個相當大的遊戲中實現。問題是,當我只在我的基本節點類使用包括標題導致解析問題
#include "ViewWrapper.hpp"
(CCNode.h
從的Cocos2D-X),我得到了很多解析,語義和Leixcal或Prepocessor問題的另一個文件(從「助推」 named_params.hpp
)沒有真正使用它,只寫包含。如果我刪除它,一切正常。有誰知道這可能是什麼原因?
(在我的測試項目,我在CCNode
包括它也沒有問題。)
編輯:的ViewWrapper.hpp
代碼:
#ifndef __Cocos__ViewWrapper__
#define __Cocos__ViewWrapper__
#include <CoreGraphics/CGGeometry.h>
#include <CoreGraphics/CGColor.h>
class ViewWrapper
{
public:
const char* accessibilityLabel();
void setAccessibilityLabel(const char* accessibilityLabel);
CGRect accessibilityFrame();
void setAccessibilityFrame(CGRect accessibilityFrame);
CGRect frame();
void setFrame(CGRect frame);
CGColorRef backgroundColor();
void setBackgroundColor(CGFloat r, CGFloat g, CGFloat b, CGFloat a);
ViewWrapper (CGRect frame);
ViewWrapper (void);
~ViewWrapper (void);
private:
struct Impl;
Impl* impl;
};
#endif /* defined(__Cocos__ViewWrapper__) */
希望有所幫助。
錯誤在struct nil {...}
。也許它有一些問題,因爲Objective-C使用零和我的包裝包裝Objective-C代碼?但我的頭是一個.hpp
文件...
ANSWER(不能正確回答,因爲它是保留): 我取下的兩個包括
#include <CoreGraphics/CGGeometry.h>
#include <CoreGraphics/CGColor.h>
和使用科科斯頭像CCGeometry.h
和ccTypes.h
所以頭沒有Objective-C代碼,編譯器不會與增強版的nil混淆。
然後你的頭文件中有一些錯誤。你是否錯過了一個預處理程序'#endif'?缺少分號?缺少或額外的大括號('{'或'}')? –
沒有更多的細節很難說...檢查預處理器宏重新定義的東西,檢查未關閉的#endif,未關閉},檢查標題中使用名稱空間。 – jsantander
頭文件本身必須有一些錯誤..尋找一些愚蠢的錯誤... –