我目前正在编程遇到这个问题的东西:
我有一个Scene
班级和一个MainScene
班级:
class Scene{
Scene();
}
class MainScene : public Scene{
MainScene();
}
我想要做的是跟踪这样的场景列表:
std::map<std::string, Scene*> scenes;
我像这样向它添加一个场景:
MainScene* mainscene; //I do not make it a new because i want my scenemanager to handle that
scenes.emplace("mainscene", mainscene); // add it to the list
我有这样的功能:
template <class T>
void SceneManager::recreateScene(T* &scene)
{
scene = new T();
}
这样当我想使用某个函数loadscene
时,我可以从列表中抓取场景并删除当前场景,并使用该函数创建新场景recreateScene
。但是地图给了我Scene
。因此,当我使用recreateScene
它时,它会调用构造函数Scene()
而不是MainScene()
. 但我需要它知道列表中的场景是 aMainScene
所以它创建 anew MainScene()
而不是 a new Scene()
。