#pragma once #include template class Average { public: ~Average(); void AddValue(T value); T GetAverage(void); private: std::list m_Values; }; template Average::~Average() { m_Values.clear(); } template void Average::AddValue(T value) { if (m_Values.size() < N) { m_Values.push_back(value); } else { m_Values.pop_front(); m_Values.push_back(value); } } template T Average::GetAverage(void) { T tmp = 0; for (auto it = m_Values.begin(); it != m_Values.end(); it++) tmp += *it; return tmp / m_Values.size(); }