改错题

qq29992579 2010-01-03 01:03:31
#include <iostream>
using namespace std;
template <class T>
T max(T t1,T t2)
{
return (t1>t2)?t1:t2;
}
void main()
{
cout<<max(3,4)<<endl;
}

请问为什么会报错说是 错误 1 error C2668: “max”: 对重载函数的调用不明确 e:\学习\c++\整理后的\模版\函数模版\函数模版.cpp 10 函数模版
...全文
75 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Contemplating 2010-01-03
  • 打赏
  • 举报
回复
学习了:)

下面这样写写:

#include <iostream>
using std::cout;
using std::endl;

template <typename T>
T max(T t1,T t2)
{
return (t1>t2)?t1:t2;
}

void main()
{
cout << max<int>(3,4) <<endl; // 这样写更严格一些
cout << max(3,4) << endl;
}
小小攻城师 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 npuhuxl 的回复:]
不要using namespace std;
你的程序只要using std::cout;
using std::endl;就可以了
而且从这个问题你也可以看出using namespace ××;所带来的负面影像,把你不想要的符号也using进来了~
[/Quote]
这个建议是不错。可是如果要用很多很多的std名字空间里面的名字,难不成每一个都要用一个using?很不现实的。我觉得根本在于了解这些名字,库已经定义的名字一般都有规律,随着深入是可以掌握。一般也没什么问题。
但是这确实是一个好建议。小代码,或者用名字不多的,最好采用using std::cout;有效防止此类错误发生。
npuhuxl 2010-01-03
  • 打赏
  • 举报
回复
不要using namespace std;
你的程序只要using std::cout;
using std::endl;就可以了
而且从这个问题你也可以看出using namespace ××;所带来的负面影像,把你不想要的符号也using进来了~
macrojj 2010-01-03
  • 打赏
  • 举报
回复
改个名字吧
小小攻城师 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 qq29992579 的回复:]
#include <iostream>
using namespace std;
template <class T>
T max(T t1,T t2)
{
return (t1>t2)?t1:t2;
}
void main()
{
cout < <max(3,4) < <endl;
}

请问为什么会报错说是  错误 1 error C2668: “max”: 对重载函数的调用不明确 e:\学习\c++\整理后的\模版\函数模版\函数模版.cpp 10 函数模版

[/Quote]
可以理解成关键词错误
在库函数中已经定义了一个max函数,你自己要定义肯定名字不能一样!
如果名字一样编译器会认为是重载,但是参数列表是相同的,所以编译器报错重载不明确
推荐楼主好好把编译器定义的关键词理解清楚(这些应该不叫关键词,但叫什么无所谓)
否则很容易出现诸如此类的问题。不要和库函数名字冲突。
qgw_2000 2010-01-03
  • 打赏
  • 举报
回复
max函数换个名字,和stl中的max函数冲突。
昵称很不好取 2010-01-03
  • 打赏
  • 举报
回复
max已经被std空间占用,换一个新的函数名即可~~
#include <iostream> 
using namespace std;
template <class T>
T maxx(T t1,T t2)
{
return (t1>t2)?t1:t2;
}
void main()
{
cout <<maxx(3,4) <<endl;
}
qq29992579 2010-01-03
  • 打赏
  • 举报
回复
谁知道呢 高手 给说一下咯

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧