我试图做一些包装类,如
template <typename T>
class EdgeTriggeredState
{
public:
void Tick()
{
oldData = newData;
}
EdgeTriggeredState& operator =(const T& v)
{
newData = v;
return *this;
}
// T& operator = (void)
// {
// return oldData;
// }
// T& operator T()
// {
// return oldData;
// }
private:
T oldData;
T newData;
};
基本上,我希望能够将类包装的值直接分配给T类型的变量。我试过同时实现赋值(到T型)运算符和类型T的强制转换运算符。由于我一直在单独使用C语言工作,因此我对C++有点生疏。有没有办法实现这一点而不创建一个命名getter方法?
当我取消对第一次实现尝试的注释时,我得到了错误
当我取消注释第二个实现(并注释掉第一个实现)时,出现错误:
最佳答案
当您编写operator T
时,返回类型是隐式的,因此您的代码应类似于:
template <typename T>
class DumbWrapper {
T oldData;
T newData;
public:
DumbWrapper& operator = (const T& val) {
newData = val;
return *this;
}
operator T() {
return oldData;
}
};
[还请注意最后的分号,以及构造函数和转换运算符可能打算公开的事实。]