比较基类的 2 个派生对象

Compare 2 derived objects of base class

本文关键字:派生 对象 基类 比较      更新时间:2023-10-16

我有这样的东西:

class A
{
public:
    A();
    ~A();
};
class B : public A
{
 //stuff
};
class C : public A
{
 //stuff
};
class D : public A
{
 //stuff
};
void Collision()
{
 //obj is a multidimensional array of class A that stores objects from class B, C and D
 if(obj[x][y] != B && obj[x][y] != C) //type name is not allowed
    doStuff();
}

我收到错误:不允许使用类型名称

我知道不应该像这样比较对象,但我不知道我应该怎么做。

#include <typeinfo>
void Collision()
{
    if (typeid(obj[x][y]) != typeid(B) && typeid(obj[x][y]) != typeid(C)) 
        doStuff();
}