我正在创建基于关卡的游戏。难以在不同级别覆盖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()函数。我的代码有什么问题吗?
有什么想法来解决它吗?
答案 0 :(得分:1)
返回在函数的本地范围内创建的const char *。这意味着只要函数返回返回的指针就是垃圾。
您应该返回std :: string。