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;
}
}
但是,这并不编译。
有没有人有想法如何实现?