1

我正在制作一个非常简单的游戏,其中对象(元素 A 或 B)在屏幕周围飞行、碰撞等。

A 和 B 之间的唯一区别是对象的颜色(A = 黑色 B = 白色)。

是否可以有一个元素容器容器(或 20 个元素)来容纳 10 个 A 和 10 个 B。我环顾四周,如果我有 A 型或 B 型的 Vector 但不是混合物,我可以做到。

任何帮助将非常感激!谢谢 - 迟来的复活节快乐

凯杰

编辑:A和B都具有许多不同的特征,例如它们可以移动的不同速度以及不同的能力。E,g A 可以发射激光,但 B 不能。这就是为什么我使用不同的类。

4

2 回答 2

4

C++ 容器是同质的,这意味着您不能在其中存储不同类型的对象。但是,您可以存储指向基本类型的指针并使用两个派生类AB类。

但是,在您的情况下,如果唯一的区别是颜色,我认为没有理由拥有不同的课程。只需在类上有一个颜色属性。

如果您需要不同的类,您可以使用如下所示的基类:

class Base
{
public:
// base properties both classes share
// virtual methods etc.
};

class A : public Base
{
public:
 // class A specific methods/properties
};

class B : public Base
{
public:
 // class B specific methods/properties
};

现在您可以拥有一个 Base 对象指针向量,它们可以是 typeAB.

std::vector<Base*> objects;

A *a = new A();
B *b = new B();
objects.push_back(a);
objects.push_back(b);
于 2013-04-02T13:11:19.443 回答
0

如果你真的需要在容器中存储不同的对象,那么也许:

`boost::any`

是正确的答案吗?

于 2013-04-02T13:15:53.750 回答