typedef Vererbung aus einer reinen abstrakten Basis

8

Bearbeiten: duplizieren

gefunden

Ich habe einen Problemcode auf den einfachsten Arbeitsfall reduziert, um Folgendes zu illustrieren: mein typedef in einer reinen abstrakten Basisklasse wird nicht von der abgeleiteten Klasse geerbt. Im folgenden Code möchte ich system_t typedef in ConcreteTemplateMethod übernehmen:

%Vor%

Dieser Code wird kompiliert und wie erwartet ausgeführt. In ConcreteTemplateMethod ist Folgendes erforderlich, und wenn es entfernt wird, werden Compilerfehler verursacht:

%Vor%

Beachten Sie, dass der system_t -Typ in der Basisklasse jedoch bereits typedef 'ed ist. Warum muss ich beim Vererben einen anderen Typdef einschließen?

Mir ist klar, dass ich den Typnamen von system_t im abgeleiteten ConcreteTemplateMethod mit typename TemplateMethod< Analyzer<T> >::system_t& qualifizieren kann, aber das ist ein bisschen ausführlich, und ich möchte vermeiden, co_de% auf die Basis zu setzen jedes Mal, wenn ich erben und müssen die gleiche typedef verwenden. Gibt es einen Weg, den ich in der Basis system_t definieren kann?

    
Shamster 03.09.2010, 20:21
quelle

1 Antwort

8

sollten Sie

tun %Vor%

um "typedef" zu erben. typedef wird nicht automatisch vererbt (wenn der Compiler kompatibel ist).

Wenn Sie durch den Stack-Überlauf schauen, wird es irgendwo ein Duplikat dieser Frage geben.

    
Anycorn 03.09.2010, 20:24
quelle