STL class vector::iterator - wie muss das aussehen?



  • Also ich habe eine Klasse, die sieht ungefähr so aus:

    template <class T> class cTree
    {
    
        private:
        T   data;
        vector<cTree*> child;
    
        public:
        int id;
    
    };
    

    jetzt will ich einen Baum erstellen in dem ich an ein Element mit der ID xyz ein neues anhängen kann.

    die Funktion müsste ja jetzt prüfen, ob denn das jeweils bearbeitende Element die gleiche ID hat wie das gewünschte Parent-Element. Ist dies der Fall wird nen push_back() gemacht und das neue Element einfach dran gehängt.

    Ist dem nicht so, muss ich für jedes child-Element meine add-Funktion aufrufen.
    Mein Problem ist nun, dass er einen Iterator in der Form

    vector<cTree* >::iterator it;
    

    nicht annimmt. Der Compiler meldet "expected ; before 'it'"

    Kann mir jemand erklären, wie mein Iterator auszusehen hat???



  • setz mal ein typename davor :

    typename vector<cTree<T>* >::iterator it;
    


  • phlox81 schrieb:

    setz mal ein typename davor :

    typename vector<cTree<T>* >::iterator it;
    

    Nicht raten!



  • Das hat aber schon etwas gebracht. Ich bekomm nix fehler mehr.
    thx



  • DocJunior schrieb:

    vector<cTree* >::iterator it;
    

    Das dürfte nicht funktionieren, da cTree selber ja auch eine Template-Parameter erwartet. Du brauchste quasi "vector<cTree<T>*>".

    Solange der vector nicht selbst ein Template-Parameter ist brauchste da auch kein typename.

    Edit: Sehe gerade dein Post.
    Geht das wirklich?

    vector<cTree*> child;
    


  • Er hat nicht gemeckert, aber ursprünglich hatte ich auch das <T> drin.
    Den Code musste ic abtippen, da ich mal wieder am Laptop arbeite und der momnentan kein Internet hat..



  • Konrad schrieb:

    Geht das wirklich?

    vector<cTree*> child;
    

    Ja. Dank "class name injection" ist der Name einer Templateklasse innerhalb der Klassendefinition äquivalent zu Templatename<Template-ParameterListe>.


Anmelden zum Antworten