我正在尝试创建一种方法来保存我的C ++游戏中的所有实体,因为数组仅限于一种类型,所以数组不起作用。我需要存储类Entity的所有东西,以及它的所有衍生物。我一整天都在尝试以一种方式存储所有游戏实体,我可以循环遍历它们并绘制它们。仍然没有找到解决方案。
答案 0 :(得分:2)
假设Entity
是许多东西派生的基类,你可以拥有一个容器(任何容器都可以,但std::vector
是一个好的起点,除非你有其他一些特定的要求)
class Entity
{
public:
virtual void Draw() = 0;
};
class Atom : public Entity
{
public:
void Draw() override {}
};
class Environment : public Entity
{
public:
void Draw() override {}
};
int main()
{
std::vector< std::shared_ptr<Entity> > entities;
entities.push_back(std::make_shared<Atom>());
entities.push_back(std::make_shared<Environment>());
// Draw entities:
for (size_t ent = 0; ent < entities.size(); ++ent)
{
entities[ent]->Draw();
}
return 0;
}
如果Entity
不是某个基类,您还可以查看boost::optional
答案 1 :(得分:-2)
您可以使用std :: vector。它有许多用于简单数据操作的内置函数,您可以将它用于任何类型。