(overervende)objecten in een array/lijst zetten

Status
Niet open voor verdere reacties.

tchembado

Gebruiker
Lid geworden
28 nov 2006
Berichten
93
ik heb een klasse beest, een klasse vos die overerft van beest, en een klasse kip die overerft van beest.

Nu wil ik een array maken met allemaal beesten (kippen en vossen). Het mag trouwens ook een andere lijst zijn. Het komt er gewoon op neer da ik een lijst moet krijgen waar ik die beesten in kan zetten, en dat die lijst zowel vossen als kippen kan bevatten.

Alvast bedankt,

Tchembado
 
keb het eens met vectoren gebruikt,
maar hierbij staan de beesten ook opgeslagen als beesten in de vector, en niet specifiek als vossen of kippen.

Tchembado
 
Als je een lijst met Beesten maakt gaat het er toch om dat ze Beesten zijn? Als je iets specifieks wilt doen voor de Kippen moet je daar een aparte lijst voor bijhouden.

Code:
#include <iostream>
#include <vector>

class Beest
{
public:
    virtual void ZegHoi() { std::cout << "Hoi, ik ben een beest." << std::endl; }
private:
    int leeftijd;
};

class Kip : public Beest
{
public:
    void ZegHoi() { std::cout << "Hoi, ik ben een kip." << std::endl; }
    void Kakel() { std::cout << "Tok!"; }
};

class Vos : public Beest
{
public:
    void ZegHoi() { std::cout << "Hoi, ik ben een vos." << std::endl; }
    void Blaf() { std::cout << "Woef!"; } // of wat voor geluid maken vossen..?
};

int main()
{
    std::vector<Beest*> beesten;
    Kip* kippie = new Kip;
    Vos* vossie = new Vos;
    beesten.push_back(kippie);
    beesten.push_back(vossie);
    
    for ( std::vector<Beest*>::iterator i = beesten.begin(); i != beesten.end(); ++i )
        (*i)->ZegHoi();
        (*i)->Blaf(); // gaat je niet lukken..
    
    delete kippie;
    delete vossie;
    
    std::cin.get();
    
    return 0;
}
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan