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

标签 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();
}

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

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

最佳答案

#include <typeinfo>

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

关于c++ - 比较基类的 2 个派生对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20778270/

相关文章:

excel - 类模块中是否需要 Me 关键字?

python - 计算列表从0到n-1的元素之和并与最大的比较

c++ - 静态局部变量和静态局部对象初始化

c++ - 取消引用指针的地址?

c++ - 为什么在函数内的 extern 上提供显式初始化程序不会覆盖 extern?

c++ - 具有共享继承的 C++ 中的多态性

Java MultiChoice,2 个错误答案?

Python:如何引用成员变量

javascript - 使用两个哈希表来识别 JavaScript 中的相似之处

pdf - PDF 文件的视觉差异以确定像素完美度