ドキュメントの 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