15. april 2002 - 14:13Der er
6 kommentarer og 1 løsning
hvad er mit object instans af?
Jeg er forholdsvis nu i c++ og løbet ind i et problem jeg tror er rimlig enkelt.
Jeg har et arvehierarki der se således ud? Skabning<-Spiller Skabning<-Vaesen<-(Kaempe, Orc, osv. osv)
Jeg laver herefter instanser således. Skabning *a = new Spiller(); Skabning *b = new Kaempe(); Så jeg kan lave noget polimorfi noget.
Disse instanser af objekter placere jeg så i en: vector<Skabning*> c; Med: c.push_back(a); c.push_back(b);
Spørgsmålet: Ved et gennemløb af denne vector vil jeg gerne kunne få afvide hvilken klasse fx. a er lavet af (nemlig spiller) og hvad b er lavet af(nemlig Kæmpe).
her stopper min c++ viden i midlertid.
Jeg kan dog give et hint og sige at i Java kan man bruge 'instans of' og få true/false... findes der noget lignende i C++?
Spiller* pSpiller = dynamic_cast<Spiller*>(c.front()); if( pSpiller ) { // Den første i vectoren er en "Spiller" } else { // Den første i vectoren er IKKE en "Spiller" }
Der er ikke elegant at Typecaste sig frem til klasse-type. I dit eksempel kan det godt bruges, da du kun har få nedarvninger, med hvad hvis du f.eks havde 50-eller 100 forskellige "skabninger".
1. Du burde bygge dine klasser op på en sådan måde, at du er ligeglad med hvilken slags skabning de er.
2. Hvis du alligevel gerne vil kunne spørge på hvilken slags skabning en vilkårlig instance er, så burde du implementere en virtual funktion der returnerer denne opslyning.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.