我创建了自己的std::cout
类似于将两者写入的对象std::cout
并写入日志文件。
我目前在头文件中像这样定义它,但我收到了未使用的变量警告。
头文件<MyLib/Log.h>
static LOut { };
static LOut lo;
template<typename T> inline LOut& operator<<(LOut& mLOut, const T& mValue)
{
std::string str{toStr(mValue)};
std::cout << str;
getLogStream() << str;
return mLOut;
}
Usage:
#include <MyLib/Log.h>
...
lo << "hello!" << std::endl;
Should lo
be static
?应该lo
be extern
?
感谢您解释声明的正确方法cout
-like 对象并展示主要标准库实现如何做到这一点。
编辑:由cout
-like 对象,我的意思是包含相应标头后始终可用的全局变量。
std::cout
简单声明如下:
namespace std {
extern ostream cout;
}
它是一个常规的全局变量;你自己也可以做同样的事情。放一个extern
在标头中声明变量;然后在源文件中定义相同的变量并将其链接到您的应用程序:
// mylog.h
extern MyLog mylog;
// mylog.cpp
MyLog mylog(someparams);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)