我为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
头文件本身必须有一些错误..寻找一些愚蠢的错误... –