1

クラスが自分自身を登録しているクラス ファクトリ (Visual Studio 2008) を作成しています。クラス ファクトリはシングルトンであり、クラスは次のように自分自身を登録します。

Factory.h で

class Factory {...};

template<typename T>
class Register
{
public: 
    Register()
    {
        Factory::instance().register<T>();
    }
};

SomeRegisteredClass.cpp で

#include <Factory.h>

class SomeRegisteredClass : public ISomeInterface
{
};

static Register<SomeRegisteredClass> register;

ただし、実行時に Register のコンストラクターが呼び出されることはないため、SomeClass が登録されることはありません。SomeRegisteredClass.cpp 内のものを最適化する最適化が進行中であると思われます (SomeClass はコード内の他の場所では直接使用されず、そのインターフェイスを介してのみ使用されるため)。それが可能で、どうすれば無効にできますか。

Edit1: このすべてのものは、実行可能ファイルにリンクされている静的ライブラリにコンパイルされます。

4

0 に答える 0