AVR ile kullanılabilen hareketli ortalama için basit bir sınıf yazdım.Tüm sınıf gövdesini kopyalamadan ve yapıştırmadan bir şablon nasıl uzmanlaşır?
template<typename T, typename Tsum = int32_t>
class MovingAverage { ... }
Ama şimdi kopyalamadan şamandıra için bu sınıfı uzman ve bütün sınıf vücudu yapıştırarak ve ben iki şablon parametreleri kullanmak gerekmez T ve TSUM yüzer tüm ve bunu değiştirmek istiyorum. Tsum, T türünün tüm geçirilen değerlerinin toplandığı 'toplam' değişkenin türüdür. Eğer 'uint8_t' ise, 'uint32_t' değerini toplam için kullanmak iyi bir fikirdir, ancak float veya double için daha yüksek hassasiyetli bir veri türü kullanmaya gerek yoktur, bu yüzden bu amaç için sadece bir parametre istiyorum.
typedef MovingAverage<float, float> MovingAverage<float>
veya bu şekilde: Ben bu şekilde çalışır diye düşündüm
template<>
class MovingAverage<float> : public MovingAverage<float, float> {};
Ama yanılmışım ve ben iki kez kod yazmak zorunda sadece çözüm buldum.
Sınıfı sadece bir kez yazmak için bir yol var mı? Şimdiden teşekkürler!
+1, ben daha okumalısınız :) –
hatırlatıyor @ DanielFrey kitap da güzel bir okuma, çok pedagojik, bir C++ 11 sürümü için sabırsızlanıyorum. Std :: is_floating_point' hilesi için – TemplateRex