我最近阅读了log4cplus-1.1.2的源代码,发现SharedLoggerImplPtr
似乎是Loger::value
比spi::LoggerImpl *
更好的类型。
logger.h中Loger::value
在284-285行的定义:
/** This is a pointer to the implementation class. */
spi::LoggerImpl * value;
在logger.cxx中第105-110行,第149-153行执行ctor和dtor:
Logger::Logger (spi::LoggerImpl * ptr)
: value (ptr)
{
if (value)
value->addReference ();
}
Logger::~Logger ()
{
if (value)
value->removeReference ();
}
这是真的吗?
答案 0 :(得分:1)
我依稀记得这是因为Windows上的模板实例化导出问题。基本上,Visual Studio会抱怨在导出Logger
时,不会导出SharedPtr<LoggerImpl>
。但是为出口标记整个模板会产生其他后果和问题。