【发布时间】:2015-04-12 17:21:39
【问题描述】:
首先,我真的很喜欢单例的延迟初始化模式。我通过以下方式使用它来获取具有不同值类型的不同类型的数据(示例已简化):
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;
}
}
但这不会编译。
你们中有人知道如何实现吗?
【问题讨论】:
标签: c++ templates static non-static class-members