klassenhierarchie´, forwardeklaration und trotzdem fehler...
-
hi,
ich habe zwei template-klassen. die grundstruktur des programms sieht wie folgt aus:
template<class T> class Derived : public Base<T> { //... T member; }; template<class T> class Base { //... Derived<T> clmember; }; //main Base<datentyp> base;
da das nicht funktioniert habe ich eine forward-declaration vor die klasse Derived eingefügt:
template<class T> class Base; //oder class Base<T>?
trotzdem bekomme ich immernoch fehlermeldungen der art:
error C2504: 'Base<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >' : Basisklasse undefiniert
Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'Derived<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >
Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'Base<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >'
falls mehr code erforderlich ist, bitte sagen.
was ist da los?
-
Sowas kann doch niemals funktionieren.
-
Das kann überhaupt nicht gehen. Base enthält ein Derived, welches als Basisklassenobjekt wieder ein Base enthält, was ein Derived enthält, was ... mit anderen Worten, eine unendliche Rekursion. Was wolltest du damit machen? Mag sein, dass du das Problem lösen kannst, indem du (wie bei der allseits bekannten verketteten Liste) mit Zeigern oder auch Referenzen arbeitest. Die funktionieren auch mit unvollständigen Typen
-
jetzt, wo ihr es sagt, erkenn ich es auch
werd ich mir was anderes überlegen müssen...
danke trotzdem.