decl für list<unknown type>::iterator



  • Ich versuche im wesentlichen folgendes:

    class X;
    typedef std::list<X>::iterator iterator;
    class X { ... };
    

    nun geht die iterator-deklaration nicht, weil für list<X> der Typ X bekannt sein muß. Nun denk' ich mir in meiner Naivität, für den iterator-typen muß er ja nicht...

    Die Reihenfolge kommt wie folgt zustande:

    class X;
    
    // ListOfX implementiert Liste von X mit copy-on-write semantics
    class ListOfX
    {
       shared_ptr< std::list<X> > m_listImpl;
    public:
       typedef std::list<X>::iterator iterator;
    
       iterator begin() { ... }
       iterator end()  { ... }
    };
    
    // ..und X kann eine unterliste enthalten
    class X
    {
      ListOfX   m_subList;
      ...
    }
    

    Bekommt man das irgendwie hin? im schlimmsten fall muß ich halt aus ListzOfX m_subList einen Zeiger machen, wollte aber die doppelte indirektion vermeiden.



  • Wenn du die Liste von X schon als Klasse machst, dann kannst du an der Stelle doch auch eine Liste von Pointern halten. Das würde die Sache etwas vereinfachen.


Anmelden zum Antworten