作者Ygulu (生活以下)
看板C_and_CPP
標題[問題] 很簡單的樣板的問題
時間Tue Mar 31 13:59:01 2009
#include <iostream>
using namespace std;
template <class T>
T max(T a, T b)
{
return a>b? a:b;
}
int main()
{
int m=3, n=2;
cout << max(m, n) << endl;
system("pause");
}
下面是錯誤訊息
In function `int main()':
call of overloaded `max(int&, int&)' is ambiguous
candidates are: T max(T, T) [with T = int]
const _Tp& std::max(const _Tp&, const _Tp&) [with _Tp = int]
書本上只有說明 沒有範例
看不出來哪裡有問題
可以幫忙看一下嗎 感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.204.109
1F:推 legendmtg:你的問題是啥? 03/31 14:07
2F:→ Ygulu:就是我這樣過不了 03/31 14:09
※ 編輯: Ygulu 來自: 114.42.204.109 (03/31 14:11)
3F:推 legendmtg:把max換個名字 跟標準庫內的function撞名了 03/31 14:15
4F:推 chrisdar:還是推崇一下VC2008EXP 03/31 14:17
5F:→ chrisdar:error C2668: 'max' : 模稜兩可的呼叫多載函式 03/31 14:17
6F:→ chrisdar:這樣的錯誤訊息就相當清楚了 03/31 14:17
7F:推 legendmtg:不然就不要using namespace std; 03/31 14:17
8F:→ legendmtg:using std::cout; using std::endl就好 03/31 14:18
9F:→ Ygulu:把max改掉就可以了 感謝樓上各位 03/31 14:25
10F:推 sunneo:可以把func template放到head 而且不要using namespace std 03/31 19:50
11F:→ sunneo:再需要的函式內using就好了 03/31 19:51