私は抽象クラスを持っている抽象クラスと静的メソッドは
class B:public A
{
public:
int load();
static B& instance();
}
class C:public A
{
public:
int load();
static C& instance();
}
事実は、内のコード::インスタンス()メソッドで同じであるということです各クラス:
static B& B::instance()
{
static B instance_;
if (!instance_.loaded_)
{
instance_.load();
instance_.loaded_=true;
}
return instance_;
}
static C& C::instance()
{
static C instance_;
if (!instance_.loaded_)
{
instance_.load();
instance_.loaded_=true;
}
return instance_;
}
この:: instanceメソッドを分解したいと思いますが、仮想メソッド:: load、ic annotはクラスAでそれを定義します。 理論的には、クラスAは0のインスタンスを持ち、BはCのインスタンスが1つである必要があるので、私は気が変わっていますが、このコードを分解しなければなりません。
どのように問題を解決しますか?
あなたは自由関数テンプレートinstance()
を作ることができ
これを行うには、 –