我正在学习超载。我的密码有什么问题?这是错误信息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::coutstd::endl而不是仅coutendl。如果要继续使用coutendl,请添加

using std::cout;
using std::endl;

关于c++ - C++模板重载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31307708/

10-11 22:50
查看更多