C++ 比较基类的2个派生对象

C++ 比较基类的2个派生对象,c++,class,compare,derived-class,base-class,C++,Class,Compare,Derived Class,Base Class,我有这样的想法: 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,

我有这样的想法:

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
#include <typeinfo>

void Collision()
{
    if (typeid(obj[x][y]) != typeid(B) && typeid(obj[x][y]) != typeid(C)) 
        doStuff();
}
无效碰撞() { if(typeid(obj[x][y])!=typeid(B)和&typeid(obj[x][y])!=typeid(C)) doStuff(); }
#包括
无效碰撞()
{
if(typeid(obj[x][y])!=typeid(B)和&typeid(obj[x][y])!=typeid(C))
doStuff();
}
#包括
无效碰撞()
{
if(typeid(obj[x][y])!=typeid(B)和&typeid(obj[x][y])!=typeid(C))
doStuff();
}
#包括
无效碰撞()
{
if(typeid(obj[x][y])!=typeid(B)和&typeid(obj[x][y])!=typeid(C))
doStuff();
}


如果
obj
是一个多态对象数组,而不是指向你已经在一个充满伤害的世界中的多态对象的指针。obj的定义如下:一个***对象这可能就是你正在寻找的对象,那么你就可以了。我建议使用
std::vector
。如果数组的大小固定,则将
std::vector
替换为
std::array
。将
std::unique_ptr
替换为
std::shared_ptr
std::weak_ptr
。能否详细说明“比较”的确切含义?你想知道一个对象是否属于特定类型,或者你想比较两个不同类型的对象吗?如果
obj
是一个多态对象数组,而不是指向你已经处于受伤世界中的多态对象的指针。obj的定义如下:一个***对象这可能是你正在寻找的对象,那么你就可以了。我建议使用
std::vector
。如果数组的大小固定,则将
std::vector
替换为
std::array
。将
std::unique_ptr
替换为
std::shared_ptr
std::weak_ptr
。能否详细说明“比较”的确切含义?你想知道一个对象是否属于特定类型,或者你想比较两个不同类型的对象吗?如果
obj
是一个多态对象数组,而不是指向你已经处于受伤世界中的多态对象的指针。obj的定义如下:一个***对象这可能是你正在寻找的对象,那么你就可以了。我建议使用
std::vector
。如果数组的大小固定,则将
std::vector
替换为
std::array
。将
std::unique_ptr
替换为
std::shared_ptr
std::weak_ptr
。能否详细说明“比较”的确切含义?你想知道一个对象是否属于特定类型,或者你想比较两个不同类型的对象吗?如果
obj
是一个多态对象数组,而不是指向你已经处于受伤世界中的多态对象的指针。obj的定义如下:一个***对象这可能是你正在寻找的对象,那么你就可以了。我建议使用
std::vector
。如果数组的大小固定,则将
std::vector
替换为
std::array
。将
std::unique_ptr
替换为
std::shared_ptr
std::weak_ptr
。能否详细说明“比较”的确切含义?您想知道一个对象是否属于特定类型,还是想比较两个不同类型的对象?