我想要每个类的日志源,例如文档中的 basic_logger示例
这可行,但是当我从 const 成员函数记录某些内容时,我得到一个编译器错误,抱怨 constness,如下所示:
#include "boost/log/sources/channel_logger.hpp"
#include "boost/log/common.hpp"
#include "boost/log/utility/init/to_console.hpp"
#include "boost/log/utility/init/common_attributes.hpp"
class Test
{
public:
// this works, not a const function
void test1()
{
BOOST_LOG(m_logger) << "Test 1";
}
// this will not compile, const function
void test2() const
{
BOOST_LOG(m_logger) << "Test 2";
}
private:
boost::log::sources::channel_logger<std::string> m_logger;
};
int main()
{
boost::log::add_common_attributes();
boost::log::init_log_to_console();
Test t;
t.test1();
t.test2();
return 1;
}
在这个例子Test::test2
中给出了一个编译错误,因为它的 const 而m_logger
不是。Test::test1
工作正常。
const_cast
如何在没有等的情况下以干净的方式解决这个问题mutable
。