Abstrakte Klassen & STL



  • Hi,

    ich habe zu meinem Problem die Forensuche schon bedient aber nichts gesucht.
    Und zwar habe ich eine abstrakte Basis-Klasse, z.B. so:

    class Base
    {
    public:
      virtual void doSomething();
    };
    

    Davon erbe ich jetzt ein andere Klasse:

    class Derived
    {
    public:
       void doSomething() { //mache hier irgendwas }
       void andereMethode();
    };
    

    Um das jetzt benutzen zu können, muss ich meine Objekte so anlegen:

    Base* b = new Derive();
    

    Und um jetzt ein Liste mit solchen Objekten zu verwalten benutze ich eine STL Liste. Diese muss ich ja dann so anlegen:

    list<Base*> liste;
    

    Und um das obige erstellte Objekt hinzufügen würde ich ja dann folgendes machen:

    liste.push_back(b);
    

    Aber wie iteriere ich jetzt über diese Liste, so dass immer die richtigen Methoden polymorph aufgelöst werden ? Oder ist da jetzt schon ein Fehler drinnen ?



  • Ups, das muss bei der Derived-Klasse natürlich so heißen:
    [cpp]
    class Derived : public Base
    {
    public:
    void doSomething() { //mache hier etwas }
    void andereMethode();
    };



  • arki schrieb:

    Hi,

    ich habe zu meinem Problem die Forensuche schon bedient aber nichts gesucht.

    *lol* 😃 👍



  • Argh, ja nochn Fehler. Man Man 😞
    Den abschließenden Code-Tag hab ich auch noch vergessen.

    Naja hoffentlich kann mir wer helfen..



  • list<Base*>::iterator it = l.begin();
    	for(;it!= l.end();++it)
    		(*it)->doSomething();
    

    MfG Spacelord



  • Danke, so funktioniert es 🙂



  • Apollon schrieb:

    arki schrieb:

    Hi,

    ich habe zu meinem Problem die Forensuche schon bedient aber nichts gesucht.

    *lol* 😃 👍

    wer nichts findet, der sucht 😃


Anmelden zum Antworten