gpt4 book ai didi

c++ - 使用(n 空)基类在同一个容器中存储不同的对象

转载 作者:行者123 更新时间:2023-11-30 00:37:38 28 4
gpt4 key购买 nike

假设我有两个完全不同的对象,Sprite 和 PhysicsData。

我编写了一个空基类和一个容器类,可以将对象推送到容器或从容器中移除对象。

我创建了两个这样的容器来存储两个不同的对象 - Sprite 和 PhysicsData。(不同的对象不在同一个类中)

class base
{
};

class ContainerManager
{
public:
std::vector<base*> list;
void Push(base *object);
void Remove(base *object);
};

class PhysicsData : public base
{
void applyGravity();
};

class Sprite : public base
{
void Draw();
};

ContainerManager SpriteContainer;
ContainerManager PhysicsDataContainer;

Sprite aSprite;
SpriteContainer.Push(&aSprite);

PhysicsData SomeData;
PhysicsDataContainer.Push(&SomeData);

这是应该下注的方式吗?

最佳答案

不是 C++ 方式。你应该使用模板。

要知道,STL(使用 std:: 命名空间前缀时调用的)实际上是标准模板库 :)。许多模板类已经存在,例如对于推送/删除操作,请参阅 std::list<T>

你可以这样使用它:

std::list<Sprite> SpriteContainer;
std::list<PhysicsData> PhysicsDataContainer;

等等。

There是一本关于 C++ 模板的很棒的指南,如果您仍然想为更多功能创建自己的类。
there是对 std::list 的引用,(我认为我不需要为您解释 std::vector 的用法)如果问题是您真正想做的事情。

关于c++ - 使用(n 空)基类在同一个容器中存储不同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12923294/

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