1

最近看了log4cplus-1.1.2的souce code,发现SharedLoggerImplPtr好像是比较好的类型Loger::valuespi::LoggerImpl *</p>

Loger::valuelogger.h 中第 284-285 行的定义:

/** This is a pointer to the implementation class. */
spi::LoggerImpl * value;

logger.cxx 中 ctor 和 dtor 的实现在 105-110、149-153 行:

Logger::Logger (spi::LoggerImpl * ptr)
    : value (ptr)
{
    if (value)
        value->addReference (); 
}

Logger::~Logger ()
{
    if (value)
        value->removeReference ();
}

真的吗?

4

1 回答 1

1

我依稀记得这是因为 Windows 上的模板实例化导出问题。基本上,Visual Studio 会抱怨虽然Logger被导出,但SharedPtr<LoggerImpl>没有被导出。但是将整个模板标记为导出还有其他后果和问题。

于 2014-08-15T16:31:37.000 回答