比较2个基类的派生对象

时间:2013-12-26 01:46:01

标签: 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, C and D
 if(obj[x][y] != B && obj[x][y] != C) //type name is not allowed
    doStuff();
}

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

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

1 个答案:

答案 0 :(得分:3)

#include <typeinfo>

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