我想知道以下是否可能。 可以说我有这样的代码:同一个模板互相交互的不同类的类型
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;
如何使这成为可能? 我是否必须用另一个包装这个结构/类还是我必须做一些奇特的递归?
p.s. 我已经使用C++一段时间了,但从未尝试过templates
。所以认为我对模板非常陌生。
- 编辑 - 好吧,我现在正确地得到它。但另一个相关的问题来了。
template<class OtherNumType>
Number& operator *= (const OtherNumType& in_value)
{
value *= in_value;
return *this;
}
这给出了编译错误。为什么?什么是正确的方法?
对于新内容(编辑后),最好发布一个新问题。 (但是,我认为编译失败的原因与你用于'OtherNumType'的类型有关,如果某个'T'是'Number',则必须将函数定义更改为'value * = in_value.value '。) –
jogojapan
没有它只是一个整数 – Deamonpog
你得到什么错误? (或者你是否发布了一个单独的问题?) – jogojapan