首先,我真的很喜欢单例的延迟初始化模式。我通过以下方式使用它来获取具有不同值类型的不同类型的数据(示例已简化):
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;
}
}
但这不会编译。
你们中有人知道如何实施吗?