Ich habe Probleme mit einer Zirkelreferenz von Typen. Für eine implmentation der folgenden:Kreisförmige Abhängigkeit in Vorlagenklassen
// Parent.h
template <typename OtherType>
class EnclosingType
{
public:
typename OtherType type_;
};
class OtherType
{
public:
EnclosingType & e_;
OtherType (EnclosingType & e) : e_(e) {}
};
Die Anforderung ist, dass eine OTHER Referenz auf ein Objekt der EnclosingType nehmen, so dass es Methoden, die auf EnclosingType aufrufen kann, und EnclosingType können Methoden auf OTHER aufrufen. Das Hauptziel besteht darin, es den Implementierern zu ermöglichen, ihre eigenen von OtherType abgeleiteten Typen bereitzustellen.
Was ist der beste Weg, um den Fall zu behandeln, in dem diese Art der zirkulären Abhängigkeit existiert? Was ist die korrekte Erklärung von OtherType? Was ist die korrekte Deklaration von OtherType :: EnclosingType? Was ist die korrekte Deklaration von Enclosing :: OtherType :: type_? Ist das, was ich tun muss, überhaupt möglich?
Danke.
'EnclosingType' ist kein Typ; es ist eine Vorlage. Und es hat keine Methoden. 'OtherType' hat auch keine Methoden. Ich verstehe nicht, was du zu tun versuchst. – melpomene
Überprüfen Sie CRTP, es könnte für dieses Szenario hilfreich sein, obwohl ich nicht so sicher bin, ob es Ihnen hilft, Ihr Problem zu lösen. https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern –