我想知道以下是否可能。 可以說我有這樣的代碼:同一個模板互相交互的不同類的類型
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