在log4cplus-1.1.2中,为什么Loger :: value的类型不是SharedLoggerImplPtr,而是spi :: LoggerImpl *?

时间:2014-08-15 07:19:48

标签: logging log4cplus

我最近阅读了log4cplus-1.1.2的源代码,发现SharedLoggerImplPtr似乎是Loger::valuespi::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 ();
}

这是真的吗?

1 个答案:

答案 0 :(得分:1)

我依稀记得这是因为Windows上的模板实例化导出问题。基本上,Visual Studio会抱怨在导出Logger时,不会导出SharedPtr<LoggerImpl>。但是为出口标记整个模板会产生其他后果和问题。