以下が可能かどうか疑問に思っています。次のようなコードがあるとします。
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;
}
これにより、コンパイル エラーが発生します。なんで?正しい方法は何ですか?