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()使用されるすべてのものを静的にする必要がありますか?
ありがとう。