// // // // // Lab. Calcolo II - Esempio di codice // // // // // // // // Example code: A simple template example - defined and declared. #include <iostream> #include <string> template<typename TNUM> class measurement { public: typedef TNUM value_type; // Creator measurement(const TNUM& value, const std::string date, const std::string observer) : m_value(value), m_date(date), m_observer(observer) {} // Destructor ~measurement() {} TNUM value() const { return m_value; } // Use as 'rvalue' TNUM& value() { return m_value; } // Use as 'lvalue' void value(const TNUM& new_value) { m_value = new_value; } // Value assignment const std::string &get_date() const { return m_date; } const std::string &get_observer() const { return m_observer; } private: TNUM m_value; std::string m_date; std::string m_observer; }; template<typename TNUM> std::ostream &operator<< (std::ostream &os, const measurement<TNUM> meas) { return os << meas.get_date() << " - " << meas.get_observer() << " - " << meas.value(); } int main(int argc, char *argv[]) { typedef measurement<double> measurement_t; measurement_t meas1(1.234567, "August 2nd, 2006", "Charles Brown"); std::cout << meas1 << std::endl; }