尽量不要使用using namespace std;VC++2005使用有感
2007-11-06 20:28
260 查看
今天用了VISUAL C++写了个小程序(VS2005),很简单很简单的,但是就是编译不通过
出现一个奇怪的问题:错误 1 error C2668: “max”: 对重载函数的调用不明确
最初代码如下
#include <iostream>
using namespace std;
template <typename T>
T max (T a,T b)
void main()
我将这段代码放到VC++ 6.0下竟然通过了,程序运行也正常。这让我百思不得其解。后来终于弄明白了!
其实在std命名空间下还有一个MAX函数,而且实现的功能也是一样的……我昏。利用转到定义功能可以看到微软是怎么写MAX函数的。这里为了不被鄙视就不贴微软的代码了。
明白了为什么出现这个错误我们就改写代码如下:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
template <typename T>
T max (T a,T b)
int main()
{
double x,y;
cin>>x>>y;
cout<<"Max number is "<<(max(x,y))<<endl;
cin>>x;
}
这是我比较推荐的做法,因为C++ PRIMER, EFFECTIVE C++上都是用这种方式的,但是谭浩强的书上都是一句using namespace std;就搞定,我觉得蛮简洁的就一直用了,没想到带来那么多的问题,以前在友元函数上还碰到莫名的错误呢。
其实还有两个简单的解决方案,那就是把自己定义的函数改成其他的名字,或者直接用微软提供的函数。相信微软提供的效率绝对不会比我们写的低~
好了,就写到这了。希望大家养成良好的编程习惯,^-^
出现一个奇怪的问题:错误 1 error C2668: “max”: 对重载函数的调用不明确
最初代码如下
#include <iostream>
using namespace std;
template <typename T>
T max (T a,T b)
void main()
我将这段代码放到VC++ 6.0下竟然通过了,程序运行也正常。这让我百思不得其解。后来终于弄明白了!
其实在std命名空间下还有一个MAX函数,而且实现的功能也是一样的……我昏。利用转到定义功能可以看到微软是怎么写MAX函数的。这里为了不被鄙视就不贴微软的代码了。
明白了为什么出现这个错误我们就改写代码如下:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
template <typename T>
T max (T a,T b)
int main()
{
double x,y;
cin>>x>>y;
cout<<"Max number is "<<(max(x,y))<<endl;
cin>>x;
}
这是我比较推荐的做法,因为C++ PRIMER, EFFECTIVE C++上都是用这种方式的,但是谭浩强的书上都是一句using namespace std;就搞定,我觉得蛮简洁的就一直用了,没想到带来那么多的问题,以前在友元函数上还碰到莫名的错误呢。
其实还有两个简单的解决方案,那就是把自己定义的函数改成其他的名字,或者直接用微软提供的函数。相信微软提供的效率绝对不会比我们写的低~
好了,就写到这了。希望大家养成良好的编程习惯,^-^
相关文章推荐
- 尽量不要使用using namespace std;VC++2005使用有感
- 为什么尽量不要使用using namespace std?
- 不要在头文件中使用 using namespace std;
- “using namespace std ” 使用
- C++ using namespace std 详解 与 命名空间的使用
- 为什么尽量不用using namespace std
- 尽量避免在头文件使用using namespace(转载)
- 没有躲过的坑--使用using namespace std的坏习惯
- 不要习惯用using namespace std
- C++ using namespace std 详解 与 命名空间的使用
- 没有躲过的坑--使用using namespace std的坏习惯
- C++ using namespace std 详解 与 命名空间的使用
- C++ using namespace std 详解与命名空间的使用
- //使用条件表达式作为简单的“如果...那么...”判断。 #include <iostream> using namespace std; int main() { int score=2; s
- 为什么不要使用"using namespace XXX"
- using namespace std; 尽量别用在头文件中
- using namespace std的使用(转载)
- C++头加using namespace std的原因
- 在头文件里避免使用using namespace XXX
- 命名空间std,using namespace std