gsr*_*ion 2 c++ casting operator-overloading
我正在尝试制作一个小包装类,如
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;
};
Run Code Online (Sandbox Code Playgroud)
基本上我希望能够直接为类包装的值赋予类型为T的变量.我已经尝试实现了一个赋值(到类型T)操作符和一个强制转换操作符来输入T.我在C++上有点生疏,因为我一直在C中工作.有没有办法实现这个而不创建一个命名的getter方法?
当我取消注释第一次实现尝试时,我得到错误
"../EdgeTriggeredState.h:19:21:错误:'T&EdgeTriggeredState :: operator =()'必须只接受一个参数"
当我取消注释第二个实现(并注释掉第一个实现)时,我得到错误:
"../EdgeTriggeredState.h:24:16:错误:为'运营商T'指定的返回类型"
Jer*_*fin 10
当你写一个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;
}
};
Run Code Online (Sandbox Code Playgroud)
[另请注意最后的分号,以及构造函数和转换运算符可能是公开的.]
| 归档时间: |
|
| 查看次数: |
2955 次 |
| 最近记录: |