C++ C++;模板重载
我正在学习超载。我的代码有什么问题?以下是“const\u Tp&std::max(const\u Tp&,const\u Tp&,\u Compare)[with\u Tp=double;\u Compare=double]的实例化中的错误信息: /usr/include/c++/4.8/bits/stl_algobase.h:263:26:错误:“u comp”不能用作函数 如果(uuu comp(uuu a,uu b))C++ C++;模板重载,c++,templates,operator-overloading,C++,Templates,Operator Overloading,我正在学习超载。我的代码有什么问题?以下是“const\u Tp&std::max(const\u Tp&,const\u Tp&,\u Compare)[with\u Tp=double;\u Compare=double]的实例化中的错误信息: /usr/include/c++/4.8/bits/stl_algobase.h:263:26:错误:“u comp”不能用作函数 如果(uuu comp(uuu a,uu b)) #包括 使用名称空间std; 模板T1最大值(T1、T2、T3);
#包括
使用名称空间std;
模板T1最大值(T1、T2、T3);
模板T1最大值(T1,T2);
模板
T1最大值(T1 x,T2 y){
返回x+y;
}
模板
T1最大值(T1 x,T2 y,T3 z){
返回x+y+z;
}
int main()
{
cout来自编译器的错误消息清楚地表明编译器使用的是std::max
,而不是文件中定义的函数。这是您应该避免的另一个原因
using namespace std;
要解决您的问题,请执行以下操作:
拆下那条线
使用std::cout
和std::endl
而不仅仅是cout
和endl
。如果要继续使用cout
和endl
,请添加
using std::cout;
using std::endl;
来自编译器的错误消息清楚地表明编译器使用的是std::max
,而不是文件中定义的函数。这是您应该避免的另一个原因
using namespace std;
要解决您的问题,请执行以下操作:
拆下那条线
使用std::cout
和std::endl
而不仅仅是cout
和endl
。如果要继续使用cout
和endl
,请添加
using std::cout;
using std::endl;
另一种解决方案是完全指定应调用哪个max
(即std中的一个或此文件中的一个):
#包括
使用名称空间std;
模板T1最大值(T1、T2、T3);
模板T1最大值(T1,T2);
模板
T1最大值(T1 x,T2 y){
返回x+y;
}
模板
T1最大值(T1 x,T2 y,T3 z){
返回x+y+z;
}
int main()
{
cout另一种解决方案是完全指定应调用哪个max
(即std中的一个或此文件中的一个):
#包括
使用名称空间std;
模板T1最大值(T1、T2、T3);
模板T1最大值(T1,T2);
模板
T1最大值(T1 x,T2 y){
返回x+y;
}
模板
T1最大值(T1 x,T2 y,T3 z){
返回x+y+z;
}
int main()
{
难道这不是完整的错误消息,而且使用名称空间std;
在这里肯定帮不了你(注意错误怎么说std::max
).BTW,根据实现,它应该被命名为sum
,而不是max
。这不是完整的错误消息,使用命名空间std;
在这里肯定帮不了你(注意错误怎么说std::max
)。顺便说一句,根据实现,它应该被命名为sum
,而不是max
。