2 zwqstella zwqStella 于 2015.07.15 22:08 提问

明明在类中定义了成员,为什么找不到标识符?

类定义如下:

class HelloWorld : public cocos2d::Layer
{
private:

Sprite *beijing;
Sprite *cangshu;
Sprite *guazi1;

public:
// there's no 'id' in cpp, so we recommend returning the class instance pointer
static cocos2d::Scene* createScene();

// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();

// a selector callback
void menuCloseCallback(cocos2d::Ref* pSender);

// implement the "static create()" method manually
CREATE_FUNC(HelloWorld);


//菜单
void Menutest(Ref *ref);

};

在init中的调用:

bool HelloWorld::init()
{
//前边是初始化的语句,下边是创建精灵的语句 ........
// add "HelloWorld" splash screen"
beijing = Sprite::create("beijing.jpg"); //这里开始提示找不到标识符
cangshu = Sprite::create("cangshu.png");
guazi1 = Sprite::create("guazi1.png");
setTouchEnabled(true);

// position the sprite on the center of the screen
beijing->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
beijing->setScale(2.2);
cangshu->setPosition(Vec2(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y));
guazi1->setPosition(Vec2(visibleSize.width / 2 + origin.x , visibleSize.height / 2 + origin.y ));

// add the sprite as a child to this layer
this->addChild(beijing, 0 , beijing_tag);
this->addChild(cangshu, 1 , cangshu_tag);
this->addChild(guazi1, 2 , guazi1_tag);

因为作业射击游戏刚接触Cocos 2d-x的小白一枚。。。
如图,明明在类中定义了成员变量,但是在init函数里调用的时候却说找不到标识符??为什么呢?之前还尝试过把Sprite定义为全局变量,但是这样编译通过,调试报错,那么到底怎样才能定义一个到处都可以用的Sprite变量呢

5个回答

91program
91program   Ds   Rxr 2015.07.15 22:27

图看不到哦,没有办法。
你需要将图上传到 CSDN,再在这里使用。

Evankaka
Evankaka   Ds   Rxr 2015.07.15 22:36

命名空间USING_NS_CC;加了没
射击游戏可以看这里
http://blog.csdn.net/evankaka/article/category/2922463

Evankaka
Evankaka 回复zwqStella: 嗯,那应该没问题了吧。好好搞游戏吧,加油
2 年多之前 回复
zwqStella
zwqStella 之前加了USING_NS_CC之后typedef读不出来了,就又删掉。。。现在直接把typedef删掉了
2 年多之前 回复
zwqStella
zwqStella 回复林炳文Evankaka: 头文件里加了 USING_NS_CC就行了Orz太感谢了!*★,°*:.☆\( ̄▽ ̄)/$:*.°★*撒花~~
2 年多之前 回复
zwqStella
zwqStella 头文件里有这些:#ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h",,,,,,CPP文件里有这些:#include "HelloWorldScene.h" USING_NS_CC; #include <string> #include <strstream>
2 年多之前 回复
Evankaka
Evankaka 我怀疑是头文件的问题,你.h没有引入头文件或命名空间。再试试看
2 年多之前 回复
zwqStella
zwqStella 回复林炳文Evankaka: 这样是可以的。。不过网上的方法都是写成成员变量,并不知道为什么的我的不行
2 年多之前 回复
Evankaka
Evankaka 那你试试把Sprite *beijing; Sprite *cangshu; Sprite *guazi1;写在cpp里头看看
2 年多之前 回复
zwqStella
zwqStella CPP文件里有加
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.07.15 23:19

Sprite在哪里定义的,我的确没看到。
看起来这是一个类和它的静态函数,怎么是变量呢。

zwqStella
zwqStella 为什么是静态函数@_@,Sprite *beijing; Sprite *cangshu; Sprite *guazi1;不是定义成员变量么
2 年多之前 回复
strutce
strutce   Ds   Rxr 2015.07.15 23:50

只看到你的Sprite来定义其他变量,没有看Sprite 被定义

zwqStella
zwqStella Sprite是引擎提供的一个类,找不到的标识符是beijing,cangshu 和guazi1
2 年多之前 回复
CSDNXIAOD
CSDNXIAOD   2015.07.16 15:32

明明存在却找不到类
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片