C ++ Klasse erbt von Template-Klasse, ohne den Typ zu kennen?

8

Ich entwerfe eine Template-Klassenrichtlinie, die Zeiger auf andere Klassen verarbeiten kann.

%Vor%

Das funktioniert gut. Nun möchte ich von der obigen Template-Klasse erben und neue Subklassen erstellen:

%Vor%

Problem ist, dass ich beim Definieren dieser Klassen nicht weiß, welchen Typ sie für die Basisvorlagenklasse verwenden werden. Ist das überhaupt möglich? Ich möchte den Typ, der von dem geerbten Klassenkonstruktor erhalten wurde (wahrscheinlich templated), und ihn dann an den Basisklassenkonstruktor übergeben. Kann ich das machen ? Wenn ja, wie? typedefining enums? Ich habe diese Frage

    
Ælex 12.07.2011, 21:34
quelle

2 Antworten

15

Machen Sie sie zu Vorlagenklassen:

%Vor%     
GManNickG 12.07.2011, 21:39
quelle
1

Sie können das sicher tun (siehe GMans Antwort für die korrekte Parametrisierung des abgeleiteten Typs), aber bedenken Sie, dass Sie völlig unabhängige Klassenhierarchien für jeden Typ P erhalten. Sie erstellen nicht auf magische Weise eine Superklasse mit einer beliebigen Anzahl von Elementtypen.

Betrachten Sie Vorlagen als Code-Generierungs-Tool. Sie erzeugen keinen "typen-generischen Typ", sondern erstellen viele parallele Instanzen von konkreten, statischen Typen zum Zeitpunkt der Kompilierung nach einem generischen Muster.

Wenn Sie wirklich einen einzigen gemeinsamen Basistyp möchten, können Sie vielleicht den Typ von state polymorph machen:

%Vor%

Dann können alle abgeleiteten Klassen auf die gemeinsame Schnittstelle des Status zugreifen.

    
Kerrek SB 12.07.2011 21:43
quelle

Tags und Links