這是一個非常簡單的C++函數專用示例。我認爲它應該工作,但Visual Studio的編譯器給我一個不明確的消息。C++函數專精不允許?
template <class T> T min(T a, T b) {
if(a < b) return a;
else return b;
}
string min(string str1, string str2) {
if(str1.length() < str2.length()) return str1;
return str2;
}
void main(int argc, char* argv[])
{
int n=12, p=15;
string str1= "monsieur", str2= "bonjour" ;
cout << min(n,p) << endl;
cout << min(str1, str2) << endl;
}
事實上,它說:「分(N,P)是ambigous,不知道哪個函數調用。這可能是一個微不足道的問題,但我還沒有想出這個問題。我試過下面的標題太:
template<> string min(string str1, string str2)
和:
template<> string min<string>(string str1, string str2)
有人可以幫助我走出
告訴我們確切的錯誤消息和他們指的是哪一行(否則我們只能猜測,因爲你的示例代碼可能不是很小)。 – 2012-01-04 04:42:27
使用min作爲名稱也可能會引起麻煩,請先嚐試類似'blah'的命令,以免與標準標識衝突。 – Gary 2012-01-04 04:46:33