模板转换操作符C++

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)

[另请注意最后的分号,以及构造函数和转换运算符可能是公开的.]