2
首先,我非常喜歡單例的延遲初始化模式。我用它以如下方式來獲得不同類型的數據具有不同的值的類型(該例子被簡化):非靜態成員變量創建類似於C++中的靜態單例創建
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;
}
}
但是,這並不編譯。
有沒有人有想法如何實現?