Frage

Mit CRTP (neugierig wiederkehrendes Vorlagenmuster) können Sie eine Basisklasse mit Kenntnis von Klassen angeben, die daraus abgeleitet sind. Es ist nicht so schwer, ein Array zu erstellen, das eine Instanz jeder Klasse speichert, die von einer Basisklasse ableitet (siehe Beispiel)

generasacodicetagpre.

Ich habe mich gefragt, ob es möglich war, eine Typeurist zu erstellen (siehe http : //www.research.ibm.com/designPattern/pubs/ph-jun00.pdf ) von allen Arten von abgeleiteten Klassen. Das Problem ist, dass jedes Mal, wenn der Compiler eine neue Klasse sieht, die von Base ableitet, einen neuen Typ in die Liste anhängen muss, TYPELISTS sind jedoch unveränderlich (es ist möglich, eine neue Liste mit dem an ihn angehängten Typ zu erstellen, Das Hinzufügen eines Elements zu einer Liste ist soweit ich weiß, ist nicht möglich. Am Ende möchte ich so etwas haben:

generasacodicetagpre.

Das ultimative Ziel ist es, über alle Klassen, die von generakodicetagcode ableiten, iterieren zu können.

War es hilfreich?

Lösung

Es kann mit einer Pseudo-Typ-Map durchgeführt werden.Hier ist ein Beispielcode mit dem Boost :: MPL.Die explizite Definition von "Implem" kann mit einem Makro in jedem entsprechenden Implement-Header durchgeführt werden.

generasacodicetagpre.

Andere Tipps

Ihre TypeFerne kann nur von Hand erstellt werden.Das Problem, das Sie erwähnen, ist unüberwindlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top