注册 登录
编程论坛 C++教室

Visual C++ 6.0和visual studio 2010的兼容问题

远方的海 发布于 2012-05-31 20:45, 531 次点击
#include<iostream>
using namespace std;
#include<cstring>
template<class _T>
void swap(_T &x ,_T &y)
{
    _T i;
    i=x;x=y;y=i;
}
template<class type>
void Swap(type *a,type *b)
{
    type temp[10];
    strcpy(temp,a);
    strcpy(a,b);
    strcpy(b,temp);
}
void main()
{
    int m=2;
    int n=5;
    cout<<m<<"  "<<n<<endl;
    swap(m,n);
    cout<<m<<"  "<<n<<endl;
    char a[]="12",b[]="9";
    cout<<a<<"  "<<b<<endl;
    Swap(a,b);
    cout<<a<<"  "<<b<<endl;
}
我是大一的学生,这是我在vc++6.0上写的一段代码,可以执行,可是在visual studio 2010上运行就是错的,请问怎么改?因为用vc++6.0用惯了,用visual studio2010,编译后下面的错误提示有点看不懂,就比如说上面这个错误提示吧:
1>------ 已启动生成: 项目: 模板, 配置: Debug Win32 ------
1>  main.cpp
1>e:\c++代码\模板\模板\main.cpp(23): error C2668: “swap”: 对重载函数的调用不明确
1>          e:\c++代码\模板\模板\main.cpp(5): 可能是“void swap<int>(_T &,_T &)”
1>          with
1>          [
1>              _T=int
1>          ]
1>          d:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(100): 或       “void std::swap<std::ios_base::iostate>(_Ty &,_Ty &)”
1>          with
1>          [
1>              _Ty=std::ios_base::iostate
1>          ]
1>          尝试匹配参数列表“(int, int)”时
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
能不能解释一下?谢了!

2 回复
#2
lz10919149992012-06-01 11:31
utility这个头文件中已经有了一个swap的函数,不包含这个头文件就可以了,调调设置。
#3
pangding2012-08-16 12:06
把你的 swap 换个名字就行了。或者别用 using namespace std;
1