【发布时间】:2011-01-15 04:29:24
【问题描述】:
我想创建一个记录器类,使其具有如下功能:
Logger log;
log << "Error: " << value << "seen" << endl;
这应该给我打印一条自定义格式的消息。例如。 "12-09-2009 11:22:33 看到错误 5"
我的简单类目前看起来像这样:
class Logger {
private:
ostringstream oss;
public:
template <typename T>
Logger& operator<<(T a);
}
template <typename T>
Logger& Logger::operator<<(T a) {
oss << a;
return *this;
}
void functionTest(void) {
Logger log;
log << "Error: " << 5 << " seen";
}
这将导致 oss 正确地拥有缓冲区 "Error: 5 seen"。但我不知道我需要编写/修改什么其他功能才能在屏幕上打印一些东西。 有谁知道如何让它工作,或者是否有另一种方法来设计这个类以使我的功能正常工作?
【问题讨论】:
-
问题:时间戳。您是否想要时间戳记:1)每个表达式 2)仅在每行的开头。您是否希望线路自行终止(根据您的 functionTest())。基本上,您需要更具体地了解添加时间戳的条件。另外,您是否都在控制台上登录文件?为什么需要一个特殊的类,为什么不能使用标准流?
-
Martin,这只是一个示例类。我剥离了原始的记录器类,只考虑了记录器的 cout 样式使用问题。
标签: c++ operators operator-overloading logging cout