1

最近、log4cplus-1.1.2 のソースコードを読んだところ、SharedLoggerImplPtr. Loger::value< spi::LoggerImpl */p>

Loger::value行 284-285 の logger.hの定義:

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

行 105-110、149-153 での logger.cxx の ctor と dtor の実装:

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 に答える