dll AI には、テンプレート シングルトンがあります。
template <class T>
class Singleton
{
public:
static T &instance()
{
static T _instance;
return _instance;
}
private:
//All constructors are here
};
Dll BI でクラス Logger を定義します。Dll C、D、および E は Logger を使用し、次のようにアクセスします。
Singleton<Logger>::instance();
問題は、各 dll が独自のコピーをインスタンス化することです。
Singleton<Logger>.
同じシングルトン インスタンスを使用する代わりに。この問題の解決策は extern テンプレートを使用することだと理解しています。つまり、C、D、および E に含める必要がある dll です。
extern template class Singleton<Logger>;
dll B には以下が含まれている必要があります。
template class Singleton<Logger>;
これにより、複数のテンプレート インスタンスが作成されます。すべての dll に extern を入れようとしましたが、それでも機能しませんでした すべての dll から extern を削除しようとしましたが、それでも機能しませんでした。これは、テンプレート シングルトンを実装する標準的な方法ではありませんか? これを行う正しい方法は何ですか?