我想要类似以下(psuedo-C++)类的东西。基本思想是将任何新值初始化为最后设置的值。
粘性数据.hpp
template<typename T>
class StickyData {
static T s_lastValue;
T m_value;
StickyData() { m_value = s_lastValue; } // Initialize to last set value
T& operator = (T& rhs) {
m_value = s_lastValue = rhs;
}
}
template<> StickyData<T>::s_lastValue;
使用数据.cpp
typedef int Ford;
typedef int GM;
typedef int Toyota;
StickyData<Ford> aFord;
StickyData<GM> aGM;
StickyData<Toyota> aToyota;
aFord = 10;
aGM = 2
aToyota = 20;
StickyData<Ford> anotherFord; // I want this automatically initialized to 10
为此,我需要对这些 typedef 中的每一个进行独特的 StickyData 编译。我实际上认为这会按原样工作,但是当我运行此代码时,我似乎只为所有这些不同的模板实例创建了 1 个静态 int。
我可以以某种方式为相同的基础值类型强制一个新的模板编译吗?