27. april 2002 - 17:53 Der er 1 løsning

Polymorfi og 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
27. april 2002 - 18:07 #1
hovsa...det skulle ind under c++...sorry
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester