Сравните 2 производных объекта базового класса

0

У меня есть что-то вроде этого:

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

Я получаю сообщение об ошибке: имя типа не разрешено

Я знаю, что не судить, чтобы сравнивать объекты, подобные этому, но я не знаю, как это сделать.

  • 0
    Если obj - это массив полиморфных объектов, а не указатели на полиморфные объекты, вы уже в мире боли.
  • 0
    obj определяется так: A *** obj
Показать ещё 4 комментария
Теги:
class
base-class
compare
derived-class

1 ответ

3
Лучший ответ
#include <typeinfo>

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню