The CRTP è suggerito in questa domanda sul polimorfismo dinamico. Tuttavia, questo modello è presumibilmente utile solo per il polimorfismo statico. Il design che sto guardando sembra essere ostacolato in senso orario dalle chiamate alle funzioni virtuali, come hinted at here. Un aumento di velocità di persino 2,5 volte sarebbe fantastico.Esistono alternative al polimorfismo in C++?
Le classi in questione sono semplici e possono essere codificate completamente in linea, tuttavia non è noto fino al runtime quali classi verranno utilizzate. Inoltre, possono essere incatenati, in qualsiasi ordine, accumulando prestazioni ingiuriate.
Qualsiasi suggerimento (incluso il modo in cui il CRTP può essere utilizzato in questo caso) benvenuto.
Modifica: Googling presenta una menzione di modelli di funzione. Questi sembrano promettenti.
Credo che le if-statement in un template potrebbero rendere questo pasticcio un po 'più pulito. Sembra comunque promettente. – casualcoder
Si prega di utilizzare static_cast <> anziché reinterpret_cast <>, quest'ultima darà risultati errati in taluni casi (su una tipica implementazione, un esempio sarebbe se Foo o Bar comprende più classi base e la base non è prima tra loro). –
Buon punto, grazie; risposta aggiornata. – timday