覆盖cocos2dx中的函数

时间:2013-10-16 06:31:16

标签: c++ svg cocos2d-x

我正在创建基于关卡的游戏。难以在不同级别覆盖SVG文件。

这是编码,

HelloWorld.cpp

 const char* HelloWorld::SVGFileName()     //virtual function
 {
   return NULL;
 }

CCScene* HelloWorld::scene()
{
   CCScene *scene =  CCScene::create();
   HelloWorld *game = HelloWorld::create();
   GameHUD *hud = GameHUD::HUDWithGameNode(game);
   game->hud_ = hud;
   scene->addChild(game);
   scene->addChild(hud, 10);
   return scene;
 }

level1.h

 class CC_DLL level1: public HelloWorld
 {
 public:
   level1();
   ~level1();
    const char* SVGFileName();
    void addBodyNode(BodyNode* node,int zOrder);
    void initGraphics();
 };

level1.cpp

 const char* level1::SVGFileName()
 {
    CCLog("LevelSVG: level: override me");
    return ("test3.svg");
 }

SelectLevelScene.cpp

void SelectLevelScene::level0()
{
   CCDirector::sharedDirector()->replaceScene(level1::scene());
}

我的问题是,

我无法覆盖level1.cpp中的SVGFileName()函数。我的代码有什么问题吗?

有什么想法来解决它吗?

1 个答案:

答案 0 :(得分:1)

返回在函数的本地范围内创建的const char *。这意味着只要函数返回返回的指针就是垃圾。

您应该返回std :: string。