我想知道以下是否可能。假设我有这样的代码:
template <class NumberType>
struct Number
{
NumberType value;
void operator = (Number in_val)
{
value = in_val;
}
}
那么我就可以做类似的事情:
Number<int> n1, n2;
n2.value = 5;
n1 = n2;
cout << "Value: " << n1.value << endl;
但这不允许我执行以下操作:
Number<int> n1;
Number<double> n2;
n2.value = 5;
n1 = n2;
cout << "Value: " << n1.value << endl;
如何使这成为可能?我是否必须用另一个包装这个结构/类,或者我是否必须进行一些花哨的递归?
ps 我已经使用 C++ 有一段时间了,但从未尝试过templates
。所以考虑一下我对模板很陌生。
-- 编辑 -- 好的,我现在正确理解了。但是另一个相关的问题来了。
template<class OtherNumType>
Number& operator *= ( const OtherNumType& in_value)
{
value *= in_value;
return *this;
}
这会产生编译错误。为什么?正确的方法是什么?