webForumDet fria alternativet

Klasstillhörighet?

4 svar · 293 visningar · startad av N-Foe

N-FoeMedlem sedan juni 200384 inlägg
#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++?

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

PhorpherMedlem sedan feb. 20002 300 inlägg
#3

Red:
Uppfattade frågan heeelt fel. :OO

Marcus EMedlem 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
}
N-FoeMedlem 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å?

125 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)