У меня есть что-то вроде этого:
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();
}
obj
- это массив полиморфных объектов, а не указатели на полиморфные объекты, вы уже в мире боли.