Polymorfi + nedarvning
#include <iostream>#include <vector>
using namespace std;
class hest {
public:
hest::hest()
{}
virtual void hest::getType()
{
cout<<"Hest"<<endl;
}
};
class pegasus: public hest {
public:
pegasus::pegasus()
{}
void pegasus::getType()
{
cout<<"Pegasus"<<endl;
}
};
void main() {
vector<hest> vektor;
hest v1;
pegasus v2;
vektor.push_back(v1);
vektor.push_back(v2);
for (int i = 0; i<vektor.size(); i++)
vektor[i].getType();
// HER VILLE JEG GERNE HAVE AT PRG.
// UDSKRIVER HEST PEGASUS
// MEN DET UDSKRIVER KUN HEST HEST
}
Mit problem er at jeg gerne vil lave en vektor af heste (dvs. af superklassen hest samt subklassen pegasus), men programmet skal kunne skelne mellem om det er en hest eller en pegasus. Når ovenstående kode køres udskrives hest i begge tilfælde, her ville jeg gerne have den til at skrive hest og pegasus, da v2 er en pegasus. Som jeg har forstået det, så skal der i vector angives type dvs. superklassens type eller hvad? Måske har jeg misforstået dette! Er der i c++ en generel objekterklæring, så vector tager imod alle objekter uanset type?
Er der en som kan hjælpe mig videre?
På forhånd tak!
/PC