我是模板的新手,在阅读了如何制作模板后,我正在尝试对此进行测试,但我遇到了编译错误,而且我的代码看起来与我从中获取的示例完全相同。我创建了一个函数并且有一个模板,但是当我编译它时出现以下错误:
15 20 C:\Users\Fire\Desktop\test.cpp [Error] call of overloaded 'max(int, int)' is ambiguous
15 20 C:\Users\Fire\Desktop\test.cpp [Note] candidates are:
7 3 C:\Users\Fire\Desktop\test.cpp [Note] T max(T, T) [with T = int]
代码如下:
#include <iostream>
using namespace std;
template<typename T>
T max(T a, T b){
return (a > b)? a: b;
}
int main(){
cout << max<int>(10, 40);
return 0;
}
最佳答案
std::max
是 std
命名空间的一部分。您正在执行 using namespace std
并在没有 std
限定符的情况下解析所有函数。这意味着您的代码中有 2 个版本的 max
。你的和 namespace std
。为了解决这个问题,never do using namespace std
.
关于C++ 模板编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48655102/