我正在学习重载。我的代码有什么问题?下面是错误信息 In instantiation of ‘const _Tp& std::max(const _Tp&, const _Tp&, _Compare) [with _Tp = double; _Compare = double]':
/usr/include/c++/4.8/bits/STL_algobase.h:263:26: 错误:‘__comp’不能用作函数
如果 (__comp(__a, __b))
#include<iostream>
using namespace std;
template <typename T1, typename T2, typename T3> T1 max(T1,T2,T3);
template <typename T1, typename T2> T1 max(T1,T2);
template <typename T1, typename T2>
T1 max(T1 x, T2 y){
return x+y;
}
template <typename T1, typename T2, typename T3>
T1 max(T1 x, T2 y, T3 z){
return x+y+z;
}
int main()
{
cout << max(1.2,2.3,3.4) << endl;
cout << max(1,2) << endl;
}
最佳答案
编译器的错误消息清楚地表明编译器正在使用 std::max
而不是文件中定义的函数。这是你应该避免的另一个原因
using namespace std;
解决您的问题:
- 删除该行。
使用
std::cout
和std::endl
而不仅仅是cout
和endl
.如果想继续使用cout
和endl
,添加using std::cout; using std::endl;
关于C++ 模板重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31307708/