expected ‘;’ before ‘iter’, Problem bei iterator-Definition



  • Hallo,
    ich hab ein kleines Problem bei der Definition eines iterators für einen Vector

    std::vector< std::vector< Matrix<int, DIMENSION<TYPE, RANK>::DIM, 1>* > >::iterator iter;
    

    Hier gibt mir der Compiler folgendes aus:

    expected ‘;’ before ‘iter
    

    Wenn ich nur

    std::vector< std::vector< Matrix<int, DIMENSION<TYPE, RANK>::DIM, 1>* > > iter;
    

    oder

    std::vector< std::vector< Matrix<int, 3, 1>* > >::iterator iter;
    

    schreibe, dann kompiliert er ohne Probleme (da ich mit iter bis jetzt noch nichts mache).
    Die Matrixklasse kommt aus Eigen 2.0.15.
    Der Code für DIMENSION<TYPE, RANK>::DIM sieht folgendermaßen aus:

    template<RootSystemType TYPE, int RANK>
    class DIMENSION{ public: enum{ DIM = RANK };};
    
    template<int RANK>
    class DIMENSION<A, RANK>{ public: enum { DIM = RANK + 1};};
    

    Kann mir einer verraten, was ich falsch mache?

    mfg
    MamboKurt



  • Was sind TYPE und RANK in deinem Beispiel? Defines? Typedefs? Template-Typen?



  • RANK ist einfach ein int und TYPE ist ein Rootsystemtype:

    enum RootSystemType {A, B, C, D};
    


  • MamboKurt schrieb:

    RANK ist einfach ein int und TYPE ist ein Rootsystemtype:

    enum RootSystemType {A, B, C, D};
    

    Ja, aber steht in deinem Programm int RANK = 5; oder #define RANK 5 oder was (und das gleiche mit TYPE)

    Bevor ich lang herumrede: Probier mal, typename davor zu schreiben.



  • Danke!
    Hat soweit geklappt mit typename. Wenn man sich die Erklärung dafür mal durchliest klingt das auch logisch 🙂

    mfg
    MamboKurt


Anmelden zum Antworten