Mógłbyś sprostować? Z Twojej wypowiedzi rozumiem tyle, że chcesz sprawdzić dynamiczny typ obiektu. Możesz to zrobić używając dynamic_cast albo typeid. Dla ułatwienia załóżmy, że mam klasę Animal oraz dziedziczące z niej Dog i Cat. Posiadam też referencję na obiekt typu Animal, o taką:
Animal& pet;
Jest to referencja do zwierzęcia. Ale jakiego? Sprawdzimy to używając dynamic_cast:
if(dynamic_cast<Cat*>(&pet)) {
// To jest kot
} else if(dynamic_cast<Dog*>(&pet)) {
// To jest pies
} else {
// Coś innego
}
Albo typeid:
#include <typeinfo>
if(typeid(pet) == typeid(Cat)) {
// To jest kot
} else if(typeid(pet) == typeid(Dog)) {
// To jest pies
} else {
// Coś innego
}