cocos2d-x一个小坑:命名空间ui和2d的先后顺序引发的血案

来源:互联网 发布:百度网盘源码 编辑:程序博客网 时间:2024/04/30 08:39

案发当时:

在使用一些ui里面的成员的时候,需要添加的它的头文件,才可以使用不会报错。

没错,我们都是这样干的!

今天我在用Button(归属于ui里),添加头文件#include "cocos/ui/CocosGUI.h",并使用了using namespace ui; 这样操作使用。
编译开始,报错:
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(4): error C2871: “ui”: 具有该名称的命名空间不存在
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(39): error C2065: “Button”: 未声明的标识符
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(39): error C2065: “btnStart”: 未声明的标识符
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(39): error C2059: 语法错误:“)”
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(40): error C2065: “Button”: 未声明的标识符
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(40): error C2065: “btnOption”: 未声明的标识符
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(40): error C2059: 语法错误:“)”
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(41): error C2065: “Button”: 未声明的标识符
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(41): error C2065: “btnRank”: 未声明的标识符
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(41): error C2059: 语法错误:“)”
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(42): error C2065: “Button”: 未声明的标识符
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(42): error C2065: “btnHelp”: 未声明的标识符
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(42): error C2059: 语法错误:“)”
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(43): error C2065: “Button”: 未声明的标识符
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(43): error C2065: “btnStore”: 未声明的标识符
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(43): error C2059: 语法错误:“)”
1>e:\cocos2d-x-project\runningpanda3\classes\layer\welcomelayer.cpp(45): error C2065: “btnStart”: 未声明的标识符


等等报错。我很好奇,头文件和命名空间都添加正确。却报这种错误,经过反复的修改头文件命名空间位置顺序。我发现:使用如下位置;
using namespace ui;
using namespace cocos2d;
using namespace cocostudio;

就会报错。


解决方案:

ui 后面如果使用了cocos2d就会报错。

相反,如果在cocos2d后面来使用命名空间ui就不会报错。编译通过。

using namespace cocos2d;

using namespace ui;
using namespace cocostudio;

至于为什么是这样。刚入门暂不得知。期待给力牛人解答。

0 0
原创粉丝点击