Von vector erben



  • Hallo!

    Ich hätte gerne eine Klasse, die einen vector erweitert.
    Jetzt habe ich die Möglichkeit eine Klassenvariable vom Typ vector<MyItemClass> zu erstellen und Wrapper-Funktionen zu schreiben, z.B. um einen Iterator auf den Vektor bereit zu stellen, oder vector zu erben und meine Funktionen einfach dazu zu schreiben.

    Letzteres interessiert mich 🙂

    Wie erbe ich von Vector?

    Wenn ich

    #include <vector>
    class MyClass : vector 
    {
    };
    

    schreibe gibts den Fehler "error C2504: 'vector': Basisklasse undefiniert".

    Bitte daher um etweas Hilfe für Anfänger 🙂

    Grüße, pktm



  • 1. vector liegt im Namespace std. Also muss es std::vector heissen.
    2. vector ist keine Klasse, sondern eine Vorlage. Also muss die Basis std::vector
    < Typ >
    sein.



  • LordJaxom schrieb:

    1. vector liegt im Namespace std. Also muss es std::vector heissen.
    2. vector ist keine Klasse, sondern eine Vorlage. Also muss die Basis std::vector
    < Typ >
    sein.

    Ajja, da war noch was 🙂
    Danke.



  • Die Container der STL sind nicht für Vererbung gedacht. z.B. haben sie keine virtuellen Destruktoren.

    Du solltest also den Vector besser als Membervariable nutzen, um vector zu erweitern kannst du auch entsprechnede Adapterklassen schreiben, welche du dann auf den Inhalt des Vectors anwenden kannst.


Anmelden zum Antworten