Re: [問題] template+operator overloading的問題
test<float> 和 test<A>實際上是兩個不同的類(實際上你可以把template看做帶型態的
宏)。而temp1+temp2調用的是 test<float>::operator+(test<float>&) - 如你的模板
定義。
如果要實現temp1+temp2,你必須要特化template<float>然後在裡面加一個
template <float>
test::operator+(test<A>&)
※ 引述《x3795566 (冀憶)》之銘言:
: 假設我有一個結構為A 一個class為test
: 然後在main中 我宣告了兩個物件temp1,temp2
: test<float> temp1;
: test<A> temp2;
: 然後我欲使temp1+temp2 所以打算多載運算子
: 而有下面程式碼(只貼定義部份)
: template <class T>
: float test<T>::operator+(test& i)
: {
: .
: .
: .
: }
: 編譯結果顯示錯誤
: no match for 'operator+' in 'temp1 + temp2'
: candidates are: float test<T>::operator+(test<T>&) [with T = float]
: 我的編譯器為Dev-C++
: 我有試著將test<A> temp2 改為 test<float> temp2
: 編譯就成功了 所以我想問題在於operator+(test& i)的傳入參數型態
: 不知道高手可以告知我那邊的型態要如何寫呢? 感謝<(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.82.82.186
推
03/20 01:23, , 1F
03/20 01:23, 1F
→
03/20 11:45, , 2F
03/20 11:45, 2F
→
03/20 12:06, , 3F
03/20 12:06, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
14
26