Klasse mit Listentemplate des eigenen Typs als Member

jokey2

Erfahrenes Mitglied
Hallo,

in einem Projekt möchte ich eine Klasse CDataLibGroup anlegen, die als Membervariable eine Liste des eigenen Typs enthält (CList<CDataLibGroup, CDataLibGroup&>). Hier ist die Deklaration.

Code:
class CDataLibGroup 
{
public:
CDataLibGroup();
virtual ~CDataLibGroup();
CDataGenSettings m_cGenericSettings;
CString m_cstrGroupName;
CList<CDataFile, CDataFile&> m_listFile;
CList<CDataLibGroup, CDataLibGroup&> m_listGroups;
};

Leider sagt mir der Compiler (VS6):
error C2079: 'data' verwendet undefiniertes class 'CDataLibGroup'
Es scheint also so, daß ich so mit diesem Template keine Liste von Elementen seiner selbst als Member anlegen kann. Bei
Code:
CList<CDataFile, CDataFile&> m_listFile;
klappt noch alles, da diese Klassendeklaration vorher kommt. Danach kommt der Fehler.

Kann mir da jemand weiterhelfen, wie ich das doch hinkriege? Es sollte doch möglich sein, iterative Listen zu erzeugen.

Schon mal vielen Dank im Voraus und einen schönen Abend,

jokey2
 
Soweit ich weiß, kann man in einer Class diese Class als solche nicht verwenden, da sie genaugommen noch garnicht definiert ist! Versuchs stattdessen mit einem Pointer, das geht nämlich Problem los:

CList<CDataLibGroup*, CDataLibGroup&> m_listGroups;
 
Danke für den Tipp, allerdings mußte ich es so schreiben:
Code:
CList<CDataLibGroup*, CDataLibGroup*> m_listGroups;
So werden allerdings nur die Pointer auf die Objekte in der Liste gespeichert. das Zerstören beim Löschen muß außerhalb erfolgen. Ich überlege noch, wie ich das eleganter lösen könnte. Für Vorschläge bin ich immer offen ;-)
Greez,
jokey2
 
Zurück