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:
Dieser Code wird kompiliert und wie erwartet ausgeführt. In ConcreteTemplateMethod
ist Folgendes erforderlich, und wenn es entfernt wird, werden Compilerfehler verursacht:
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?
Tags und Links c++ inheritance design-patterns typedef template-method-pattern