明明已经声明了,vs提示;未声明标识符

用的是cocos2dx 3.4 final, 开发工具VS2013。
在.h文件里已经声明了Sprite * sprite; ,怎么就sprite未声明标识符?求大神

MainScene.h

#ifndef __MAIN_SCENE_H__
#define __MAIN_SCENE_H__

#include "cocos2d.h"


class MainScene: public cocos2d::Layer
{

public:
    virtual bool init();
    static cocos2d::Scene * createScene();
    CREATE_FUNC(MainScene);
    
private:
    void update(float t);
    Sprite * sprite;

};

#endif


```





MainScene.app




#include "MainScene.h"
USING_NS_CC;


Scene* MainScene::createScene(){
    auto scene = Scene::create();
    auto layer = MainScene::create();
    scene->addChild(layer);
    return scene;
}



bool MainScene::init(){
    if (!Layer::init()){
        return false;
    }
        sprite = Sprite::create("star.png");
        sprite->setPosition(CCPointMake(480, 320));
        this->addChild(sprite);

    schedule(schedule_selector(MainScene::update));
    return true;
}
void MainScene::update(float t){

    sprite->setPosition(ccpAdd(sprite->getPosition(), ccp(1, 0)));
}




```

cocos2d::Sprite *sprite;

这个不知道是VS的BUG还是cocos的BUG。。。我这几天也有时还会会出现这种奇怪的问题。

在头文件里声明就会出现这个问题,把声明移动到cpp文件就编译得过。。。

或者新建一个类,然后把这个类的头文件跟cpp都复制过去就解决了。。。。

有小概率会出现。

一般在.h文件中加入要用到的类的头文件,如#include “cocos2d.h”,一般在.cpp文件加入所需的命名域,在.h文件中如果不加名字空间,某个引用之前加上域名限定,一般的做法是在头文件中加引用的类文件,在.cpp文件中加入所需的名字空间,这是个好习惯:2:

在.h文件中加入usingnamespace cocos2d;
或者在声明的时候加入cocos2d:: 。
如:cocos2d::Sprite *sprite;

— Begin quote from ____

引用第4楼yong224于2015-04-10 17:43发表的 :
在.h文件中加入usingnamespace cocos2d;
或者在声明的时候加入cocos2d:: 。
如:cocos2d::Sprite *sprite; http://www.cocoachina.com/bbs/job.php?action=topost&tid=294900&pid=1280062

— End quote

问题解决了,谢谢