Ich versuche, eine Klasse weiterzuleiten, die von einer Vorlagenklasse abgeleitet ist, die ebenfalls nach vorne deklariert sein muss. HierWie kann ich eine Klasse deklarieren, die von einer nach vorne deklarierten Template-Basisklasse abgeleitet ist?
ist ein Beispiel für die Klassen:
class TType {
public:
TType() { }
};
template<typename T>
class Base {
public:
Base() { }
};
class Derived : public Base<TType> {
public:
Derived() { }
};
Hier ist eine gescheiterte Vermutung an, was ich brauche:
class TType;
template<typename T> class Base;
class Derived : public Base<TType>; // This fails
Derived* pDerived;
Sie haben natürlich recht, aber als ich das probiert habe und es gescheitert ist. Hier ist mein Fehler, in der Vorwärtsdeklaration habe ich 'namespace {class Derived}; und dann' class Derived; '. Anscheinend benutzt 'namespace' um etwas zu sagen, hat keinen Namespace ist nicht das gleiche wie nur' Namespace' zu skaten, so dass der Compiler mir sagte, dass es mehrdeutig ist. – Solx