容器和派生类

时间:2013-04-02 13:09:21

标签: c++ class containers derived

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

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

是否可以使用Element容器容器(或20个元素)来容纳10个A和10个B。我看了一下,如果我有一个A型或B型矢量但不是混合物,我可以这样做。

任何帮助将不胜感激!谢谢 - 和快乐迟来的复活节

KJ

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

2 个答案:

答案 0 :(得分: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对象指针向量,它们可以是AB类型。

std::vector<Base*> objects;

A *a = new A();
B *b = new B();
objects.push_back(a);
objects.push_back(b);

答案 1 :(得分:0)

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

`boost::any`

是正确答案吗?