我正在学习模板和运算符重载。我已经写了一些代码,但我很困惑...让我解释...C++模板和运算符重载
template <class T>
class tempType
{
public:
T value;
bool locked;
tempType():locked(false)
{
value = 0;
}
T operator=(T val)
{
value=val;
return value;
}
tempType<T> operator=(tempType<T> &val)
{
value=val.value;
return *this;
}
operator T()
{
return value;
}
};
我没有...
int main(void)
{
tempType<int> i;
tempType<bool> b;
tempType<float> f;
i.value = 10;
i = i + f;
return 0;
}
我需要什么样的代码,以执行
写tempType<T> operator=(tempType<T> &val){}
另外,为什么operator T()
是必需的?
该参数应该是'const'。 – WhozCraig
不确定是否是这样,但是要覆盖默认的'operator =',您应该将其定义为'tempType operator =(const tempType &val){}'。现在你需要通过'i.operator =(other_i)'显式调用方法。 –
luk32