看板 C_and_CPP 關於我們 聯絡資訊
#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
legendmtg:你的問題是啥? 03/31 14:07
Ygulu:就是我這樣過不了 03/31 14:09
※ 編輯: Ygulu 來自: 114.42.204.109 (03/31 14:11)
legendmtg:把max換個名字 跟標準庫內的function撞名了 03/31 14:15
chrisdar:還是推崇一下VC2008EXP 03/31 14:17
chrisdar:error C2668: 'max' : 模稜兩可的呼叫多載函式 03/31 14:17
chrisdar:這樣的錯誤訊息就相當清楚了 03/31 14:17
legendmtg:不然就不要using namespace std; 03/31 14:17
legendmtg:using std::cout; using std::endl就好 03/31 14:18
Ygulu:把max改掉就可以了 感謝樓上各位 03/31 14:25
sunneo:可以把func template放到head 而且不要using namespace std 03/31 19:50
sunneo:再需要的函式內using就好了 03/31 19:51