我正在制作一个非常简单的游戏,其中物体(A或B元素)在屏幕上飞行,碰撞等。
A和B之间的唯一区别是物体的颜色(A =黑色B =白色)。
是否可以使用Element容器容器(或20个元素)来容纳10个A和10个B。我看了一下,如果我有一个A型或B型矢量但不是混合物,我可以这样做。
任何帮助将不胜感激!谢谢 - 和快乐迟来的复活节
KJ
编辑: A和B都有许多不同的特征,例如它们可以移动的不同速度,以及不同的能力。 E,g A可以拍摄激光但B不能拍摄。这就是我使用不同类的原因。
答案 0 :(得分:4)
C ++容器是同类的,意味着您不能在其中存储不同的类型对象。但是,您可以存储指向基类型的指针,并使用两个派生的A
和B
类。
然而,在你的情况下,如果唯一的区别是颜色,我没有看到有不同类的理由。在课堂上只有一个颜色属性。
如果您需要不同的类,可以使用基类,如下所示:
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对象指针向量,它们可以是A
或B
类型。
std::vector<Base*> objects;
A *a = new A();
B *b = new B();
objects.push_back(a);
objects.push_back(b);
答案 1 :(得分:0)
如果你真的需要在容器中存储不同的对象,那么可能:
`boost::any`
是正确答案吗?