Objekter i Array/Vector.

Tags:    c++

Halløj,

Jeg er rendt ind i et lille problem med mit spil jeg er igang med at programmere.

Jeg har en baseklasse for felterne på en spilleplade, til denne klasse har jeg nogle underklasser der arver fra baseklassen, her har jeg blandt andre en Gade klasse, dvs. jeg har mere specifikke underklasser for hvert felt på spillepladen.

I min baseklasse har jeg defineret nogle funktioner som jeg arver I Gade hvor jeg her tilsidesætter en af dem og ændre på dens funktionalitet.
Dette virker i og for sig udemærket, bare ikke når jeg har lagt objekterne ind i en vector eller et array.

Når jeg nu har lagt nogle Gade objekter ind i en array/vector af baseklasse typen, så sker der det, at når jeg kalder en af de tilsidesatte funktioner på et af objekterne i array'et/vectoren, så udfører funktionen det den står defineret til i baseklassen, og ikke det som jeg har defineret den til nede i min arvende klasse.

Så hvordan kalder jeg funktionerne nede i Gade på mine gade objekter når de ligger inde i vectoren?

Jeg har lavet et simpelt kode eksempel så i kan se hvad jeg mener :).

Fold kodeboks ind/udKode 


På forhånd Tak!



5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Ups. Husk lige at kalde din skriv i base klassen for virtual. Med min måde bliver du også nød til at kalde delete tilsidst, for hver vector indgang, da du skal have slettet alle pointerne.
Sådan her har jeg klaret det:
Fold kodeboks ind/udKode 




Du skal lige have gang i en pointer.
Noget li:

Fold kodeboks ind/udKode 




Det ser jo ud til at virke perfekt :).

Kunne du forklare lidt nærmere om hvorfor pointerne skal slettes igen?.

Og kan du komme i tanker om evt. andre måder man kunne gøre det på,, eller er det her den bedste metode?:).



Som huskeregel kan man sige, at alt i samme kontekst, som bliver new'et, skal deletes. Det gør man for ikke at få et memoryleak.
Med hensyn til metoden, så er den god nok. En anden metode kunne være at lave det med funktioner og derefter en callback funktion, men det er mere en C metode, i mine øjne.
Men så lang tid har jeg slet ikke indenfor C og C++. Jeg er helt nybegynder indenfor dette område, kaldet programmering.



Ok, mange tak for svaret :).



t