Napisałem prostą klasę dla średniej ruchomej, która może być używana z AVR.Jak specjalizować szablon bez kopiowania i wklejania całego obiektu klasy?
template<typename T, typename Tsum = int32_t>
class MovingAverage { ... }
Ale teraz chcę się specjalizować tę klasę dla pływaka bez kopiowania i wklejania na cały organizm i zmienić wszystkie klasy T i Tsum się unosić i że nie trzeba używać dwóch parametrów szablonu. Tsum jest typem zmiennej "sum", w której sumowane są wszystkie wartości typu T. Jeśli T jest "uint8_t", dobrym pomysłem jest użycie "uint32_t" dla sumy, ale dla float lub double nie ma potrzeby używania typu danych z większą precyzją, więc chcę tylko jeden parametr do tego celu. Myślałam, że to działa w ten sposób:
typedef MovingAverage<float, float> MovingAverage<float>
lub w ten sposób:
template<>
class MovingAverage<float> : public MovingAverage<float, float> {};
Ale myliłem się i znalazłem tylko rozwiązania gdzie mam napisać kod dwukrotnie.
Czy istnieje sposób, aby napisać klasę tylko raz, a następnie specjalizować ją w ten sposób? Z góry dziękuję!
+1 dla książki, przypomina mi, że powinienem przeczytać :) –
@ Książka DanielFrey jest również miłym czytaniem, bardzo pedagogicznym, nie może doczekać się wersji C++ 11. – TemplateRex