webForumDet fria alternativet

Klasstillhörighet?

C/C++

4 svar · 293 visningar · startad av N-Foe

Medlem sedan juni 200384 inlägg
Frågan#1

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++?

Medlem sedan juni 200010 432 inlägg
#2

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).

Medlem sedan feb. 20002 300 inlägg
#3

Red:
Uppfattade frågan heeelt fel. :OO

Medlem sedan maj 20021 466 inlägg
#4

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
}
Medlem sedan juni 200384 inlägg
#5

Det här ska funka bra:

#include <typeinfo>

myClass ob;

if (typeid(ob) == typeid(myClass)){
   //funkar
}

Funkar detta till pekare till objekt oxå?

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)