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.