vector in template



  • folgende Methode:

    template<class T>
    void func( std::vector<const T*>* vec )
    {
    	for ( std::vector<const T*>::iterator iter( vec->begin() ); iter != vec->end(); ++iter )
    	{
    
    	}
    }
    

    ergibt folgenden Fehler:

    error: expected `;' before 'iter'
    

    was mach ich falsch?



  • Da fehlt doch ein typename und ein const_...

    template<class T>
    void func( std::vector<const T*>* vec )
    {
        for ( [b]typename[/b] std::vector<const T*>::[b]const_[/b]iterator iter( vec->begin() ); iter != vec->end(); ++iter )
        {
    
        }
    }
    


  • zwutz schrieb:

    was mach ich falsch?

    Mach Dich mal bzgl des Schlüsselwortes typename schlau. Das fehlt bei Dir im Code.

    Gruß,
    SP



  • -.-

    danke

    *kopf->tisch*



  • jencas schrieb:

    Da fehlt doch ein typename und ein const_...

    template<class T>
    void func( std::vector<const T*>* vec )
    {
        for ( [b]typename[/b] std::vector<const T*>::[b]const_[/b]iterator iter( vec->begin() ); iter != vec->end(); ++iter )
        {
           
        }
    }
    

    Das const_ ist doch überflüssig. Der Vector ist ja nicht const.

    Aber ehrlich gesagt, sieht das schon sehr komisch aus. Der Vektor speichert Zeiger auf const und wird per Zeiger übergeben. zwutz, bist Du sicher, dass das Deiner Intention entspricht? Du kannst übrigends nicht einen Zeiger vom Typ vector<T*>* nach vector<const T*>* konvertieren, da es zwei unterschiedliche Vektor-Klassen sind.

    Du musst schon einen besonderen Grund haben, um Vektoren zu nutzen, die Zeiger speichern. Dir ist schon klar, dass man über einen Zeiger vom Typ vector<T*> const* zwar nicht die Zeiger im Vektor verändern kann, aber das, worauf sie zeigen, ja?

    void blah(vector<int*> const * pciv)
    {
      if (pciv->empty()) return;
      * pciv.at(0) = 42;
    }
    

    Wenn Dir dieses Verhalten nicht passt, deutet es darauf hin, dass die Entscheidung Zeiger zu speichern die falsche war.

    Gruß,
    SP



  • Sebastian Pizer schrieb:

    [...]
    Wenn Dir dieses Verhalten nicht passt, deutet es darauf hin, dass die Entscheidung Zeiger zu speichern die falsche war.

    Gruß,
    SP

    den vector bekomm ich aus einem Programmteil, den nicht ich programmiert habe. Mir passt es auch nicht und es stößt mir regelmäßig sauer auf, wenn ich sowas im Programm sehe, aber alle Versuche, den Kollegen von seinem schlechten Stil zu überzeugen schlagen fehl.
    ich kann dich aber beruhigen, das ist noch eines der harmloseren Fälle 😉
    Diverse "Vorsicht, Zugriff auf Member! Nicht deleten!!!" zieren den Programmcode ^^

    Danke trotzdem nochmal



  • Sebastian Pizer schrieb:

    Das const_ ist doch überflüssig. Der Vector ist ja nicht const.

    Ich hatte das kurz bei codepad.org reingeschmissen und da hat der Compiler ohne const_ gemeckert.



  • jencas schrieb:

    Sebastian Pizer schrieb:

    Das const_ ist doch überflüssig. Der Vector ist ja nicht const.

    Ich hatte das kurz bei codepad.org reingeschmissen und da hat der Compiler ohne const_ gemeckert.

    Dann hast Du das const wohl an der falschen Stelle stehen gehabt. Bei mir geht es.



  • zwutz schrieb:

    den vector bekomm ich aus einem Programmteil, den nicht ich programmiert habe. Mir passt es auch nicht und es stößt mir regelmäßig sauer auf, wenn ich sowas im Programm sehe, aber alle Versuche, den Kollegen von seinem schlechten Stil zu überzeugen schlagen fehl.
    ich kann dich aber beruhigen, das ist noch eines der harmloseren Fälle 😉
    Diverse "Vorsicht, Zugriff auf Member! Nicht deleten!!!" zieren den Programmcode ^^

    Habt ihr keinen Projektleiter oder sowas?
    Oder Coding-Guidelines?

    Manche Programmierer halten sich halt für mächtig schlau (sind es aber gleichzeitig nicht), denen kann man nix erklären. Da hilft nur vorschreiben.
    (OK das ist ziemlich allgemeingültig, ersetze Programmierer durch Menschen)



  • hustbaer schrieb:

    Habt ihr keinen Projektleiter oder sowas?
    Oder Coding-Guidelines?

    er IST Projektleiter (zumindest ausführender) und unsere Coding-Guidelines handeln großteils darum, doch bitte eine pseudoungarische Notation zu verwenden. Und an die hält er sich natürlich 🙄 😃

    Aber hey, er ist Dipl.Inf. Er muss sich auskennen


Anmelden zum Antworten