我为我正在编写的游戏编写了一个非常简单的 Log 类,只是为了在终端中查看一些信息。但是我这样做的方式让我很烦,因为我觉得它效率太低了。每次我记录一些东西时,它的构造函数和析构函数都会被调用。因此,如果我想打印当前帧速率(例如 60fps),cont/desct 每秒调用 60 次(每秒创建和销毁 60 个日志对象)。每次我想记录一些东西并且我不想使用signleton时,我不想在游戏中传递一个日志对象。有没有更好的解决方案。
#include <iostream>
#include <sstream>
class Log
{
public:
Log() : os()
{
}
~Log()
{
fprintf(stderr, "%s\n", os.str().c_str());
}
std::ostringstream &Write()
{
os << "from log class: " << 1337 << "\t";
return os;
}
private:
std::ostringstream os;
};
int main(int argc, char *argv[])
{
Log().Write() << "Hello world " << 45;
return 0;
}