amo Haskell modello di stile di corrispondenza.
Quindi scrivi il tuo programma in Haskell.
Quello che stai cercando di fare è un passaggio su un tipo. Questa è una cosa comune che le persone fanno se vogliono evitare le funzioni virtuali. Ora, questi ultimi sono una pietra miliare di ciò che OO in C++ è tutto. Se vuoi evitarli, perché programmi in C++?
Per quanto riguarda il motivo per cui questo è malvista: Immaginate di avere un sacco di codice come questo
if(ptr.isType<Foo>()) ...
if(ptr.isType<Bar>()) ...
spalmato su tutto il codice e poi arriva qualcuno e aggiunge Baz
ai possibili tipi che ptr
forza rappresentare. Ora stai cercando attraverso una grande base di codice, cercando di trovare tutti quei posti in cui hai cambiato tipo, e cercando di scoprire quali sono necessari per aggiungere Baz
a.
E, come Murphy ce l'ha, proprio quando hai finito, arriva anche Foz
da aggiungere come tipo. (O, pensando ancora una volta, se Murphy ha il suo modo si insinua nella prima avete avuto la possibilità troppo completa aggiungendo Baz
.)
Immagino che manchi '()' dopo 'isType'. – AndiDog
Buona chiamata. +1 sul commento. – anon
In Mach7, il codice sarà come segue:
Vedi https://github.com/solodon4/Mach7 e la mia risposta su Mach7 sotto – solodon