我正在制作一个非常简单的游戏,其中对象(元素 A 或 B)在屏幕上飞来飞去,发生碰撞等。
A 和 B 之间的唯一区别是对象的颜色(A = 黑色 B = 白色)。
是否有可能有一个元素容器容器(或 20 个元素)来容纳 10 个 A 和 10 个 B。我环顾四周,如果我有一个 A 型或 B 型但不是混合型的 Vector,我就可以做到。
任何帮助将不胜感激!谢谢 - 迟来的复活节快乐
KJ</p>
编辑: A 和 B 都具有许多不同的特征,例如它们可以移动的速度不同,以及不同的能力。例如,A 可以发射激光,但 B 不能。这就是为什么我使用不同的类。
最佳答案
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 对象指针 vector ,它们可以是 A
或 B
类型。
std::vector<Base*> objects;
A *a = new A();
B *b = new B();
objects.push_back(a);
objects.push_back(b);
关于c++ - 容器和派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15764960/