Hur kan man kolla vilken klass ett objekt tillhör?
I Java kan man ju skriva "instance of", finns det nån motsvarighet i C++?
Klasstillhörighet?
4 svar · 293 visningar · startad av N-Foe
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).
Red:
Uppfattade frågan heeelt fel. :OO
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
}
Det här ska funka bra:
#include <typeinfo>
myClass ob;
if (typeid(ob) == typeid(myClass)){
//funkar
}
Funkar detta till pekare till objekt oxå?