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
.
#include <iostream>
#include <vector>
using namespace std;
class Felt // Base klassen for felterne på spillepladen
{
public:
void udskriv()
{
cout << "Jeg er baseklasse funktionen!"<< endl;
}
};
class Gade : public Felt // Class Gade arver fra baseklassen Felt
{
public:
void udskriv()
{
cout << "Jeg har tilsidesat baseklasse funktionen 'udskriv()'!";
}
};
int main()
{
vector<Felt>Felter; // Opretter en vector af typen Felt
//Opretter et gade objekt, og smider det ind i en vector
Felter.push_back(Gade()); // Opretter et gade objekt
Felter[0].udskriv(); // Kalder udskriv() på objektet
system("pause");
return 0;
}
På forhånd Tak!