/////////////////////////////////////////////////////////////// // MT4Q2.h - Logger behaves like string // // // // Jim Fawcett, CSE687 - Object Oriented Design, Spring 2012 // /////////////////////////////////////////////////////////////// #include "MT4Q2.h" #include #include #include template std::string ToString(const T& t) // doesn't need to be part of answer { std::ostringstream out; out.fill('0'); out.width(2); out << t; return out.str(); } std::string dateTime() // doesn't need to be part of answer { ::SYSTEMTIME st; ::GetLocalTime(&st); std::string dt = ToString(st.wMonth) + "/"; dt.append(ToString(st.wDay) + "/"); dt.append(ToString(st.wYear) + " "); dt.append(ToString(st.wHour) + ":"); dt.append(ToString(st.wMinute) + ":"); dt.append(ToString(st.wSecond) + " "); return dt; } Logger::Logger() { // assign dateTime to base part of logger static_cast(*this) = dateTime(); } void Logger::addMessage(const std::string& msg) { std::string temp = msg + ": "; static_cast(*this) = temp + *this + "\n"; } int main() { std::cout << "\n MT4Q2 - Logger behaves like a string"; std::cout << "\n ======================================\n"; Logger logger; logger.addMessage("This is a message"); logger.append(" first log item\n"); logger.append(" second log item\n"); std::cout << "\n " << logger; std::cout << "\n logger message size = " << logger.size() << " bytes"; std::cout << "\n\n"; return 0; }