Det ska finnas. Men jag har för mig att det är lite halvtaskigt implementerat (skillnader mellan kompilatorer) så rådet är väl att försöka hitta en annan lösning (exempelvis som arv från abstrakta klasser).
Du kan använda dynamic_cast för att göra det du vill. Det kräver att du har en basklass med en virtuell funktion.
Exempel:
class basklass
{
virtual dummy() {}
};
class superklass : public basklass
{
};
int main()
{
// Skapa en basklass (bk) och en superklass (sk)
basklass *sk = new superklass, *bk = new basklass;
// Testa om superklassen är superklass
superklass *dc_sk = dynamic_cast<superklass*>(sk);
// Testa om basklassen är superklass
superklass *dc_bk = dynamic_cast<superklass*>(bk);
// dc_sk är sk, dc_bk är 0
}