Ho scritto una classe semplice per la media mobile che può essere utilizzata con un AVR.Come specializzare un modello senza copiare e incollare l'intero corpo della classe?
template<typename T, typename Tsum = int32_t>
class MovingAverage { ... }
Ma ora voglio specializzare questa classe per galleggiare senza copiare e incollare l'intero corpo di classe e cambiare tutto T e Tsum a stare a galla e che non ho bisogno di usare due parametri di modello. Tsum è il tipo per la variabile 'sum' in cui sono stati riassunti tutti i valori passati di tipo T. Se T è 'uint8_t' è una buona idea usare 'uint32_t' per la somma, ma per float o double non c'è bisogno di usare un tipo di dati con maggiore precisione, quindi voglio solo un parametro per questo scopo. Ho pensato che potrebbe funzionare in questo modo:
typedef MovingAverage<float, float> MovingAverage<float>
o in questo modo:
template<>
class MovingAverage<float> : public MovingAverage<float, float> {};
Ma mi sbagliavo e ho trovato solo soluzioni dove devo scrivere il mio codice due volte.
C'è un modo per scrivere la classe solo una volta e quindi specializzarla in questo modo preferisco? Grazie in anticipo!
+1 per il libro, mi ricorda che dovrei leggere di più :) –
@ DanielFrey il libro è una buona lettura, molto pedagogico, non vedo l'ora che arrivi una versione di C++ 11. – TemplateRex