gpt4 book ai didi

C++ 保持抽象类型的引用/指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:28:19 25 4
gpt4 key购买 nike

我是 C++ 的新手,这个问题可能看起来很笨,因为我更像是一个 Java/Actionscript3,而且我以前从未处理过与内存相关的事情。

无论如何,至于我遇到的问题:Scene 是一个抽象类(所以我可以从它派生并有多个场景,比如 MainScene 等')

我想要 SceneManager 做的是有一个指向所选场景的指针/引用 (curSc)然后我会像这样设置场景:setScene(&someScene)

但据我所知,要有一个指针,我还必须像这样初始化它:curSc = 新场景;但它不会让我这样做,因为 Scene 是一个抽象类..

class Scene {

public:
Scene(void){}
virtual ~Scene(void){}
virtual void update() = 0;
virtual void render() = 0;
};


class SceneManager {

public:
SceneManager(void);
~SceneManager(void);
void setScene(Scene *sc);
Scene* curSc;
}

到目前为止,在我看来,在这种情况下使用指针是错误的,而且不会起作用。但我很想知道如何实现我想在这里获得的功能

非常感谢

按要求编辑:这就是我尝试使用它的方式:

首先,我有一个名为 GameScene 的派生类,它是:

class GameScene : public Scene 
{
public:
GameScene(void);
void render();
void update();
}

在我的 main() 函数中我有:

GameScene gamescene;
ScreenManager manager;

manager.setScene(&gamescene);

最佳答案

你需要一个具体的场景派生类:

class MyScene: public Scene {

public:
MyScene(void){}
virtual ~MyScene(void){}
virtual void update();
virtual void render();
};

void setScene(Scene *sc) 将是:

void setScene(Scene *sc)
{
curSc = (Scene*)sc;
}

sc 在这种情况下将是 MyScene 指针。不能创建抽象类实例(即接口(interface)),Scene在这里只是一个接口(interface)。

关于C++ 保持抽象类型的引用/指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15731289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com