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
。能否详细说明“比较”的确切含义?您想知道一个对象是否属于特定类型,还是想比较两个不同类型的对象?