まず、シングルトンの遅延初期化のパターンがとても気に入っています。次のように使用して、さまざまな値の型を持つさまざまな種類のデータを取得します (例は単純化されています)。
class A
{
template<typename T>
const T& getData() const
{
static T data;
return data;
}
}
data
変数がクラスのどのインスタンスにも接続されておらず、プログラムが終了するまで存在することがわかっています。
しかし、私が今欲しいのは、クラス A の各インスタンスが非静的な方法で変数を保持する.getData<bool>()
必要があることですクラス定義。
それは可能ですか?私はそれを実装するというアイデアを思いつきませんでした。
私は次のようなコンテナで何かを考えました:
template<A*, typename T>
class DataContainer
{
T data;
}
これにより、コードを次のように拡張できます。
class A
{
template<typename T>
const T& getData() const
{
static DataContainer<this, T> container;
return container.data;
}
}
しかし、それはコンパイルされません。
あなたの誰かがそれを実装する方法を知っていますか?