boost :: call_once()を使用してスレッドセーフなレイジー構築シングルトンシナリオを実現したいのですが、ベースシングルトンクラスには多くの派生クラスがあるため、getInstance()関数は引数を取り、初期化する派生クラスを決定します。コードは次のようになります、
Singleton * Singleton::getInstance(Input * a) {
if (!instance) {
instance = buildme(a); //buildme() will return a derived class type based on input a.
}
return instance;
}
を使用したいのですboost::call_once()
が、引数のない関数でしか使用できないようvoid (*func)()
です。誰かがここで代替の解決策について知っているなら、助けてください。
ありがとう。
編集::
call_once
別の質問、 ?を使用して非静的メンバー関数を呼び出す方法 このクラスの非静的init()
メンバー関数がありますが、を使用して呼び出すための正しい構文が見つかりませんでしたboost::call_once()
。または、作成して、そこでinit()
使用されるすべてのものを静的にする必要がありますか?
ありがとう。