鱼C论坛

 找回密码
 立即注册
查看: 4399|回复: 9

c++一个简单的问题,求解

[复制链接]
发表于 2012-9-3 19:54:09 | 显示全部楼层 |阅读模式
2鱼币
#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
template <typename N1>
void swap (N1& a,N1& b){
        N1 temp =a ;
        a=b;
        b=temp;
        }

int main(void){
    int t1=1,t2=2;
    swap(t1,t2);
    cout << a<<b;
    system("pause");
    return 0;

    }


小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-9-3 19:55:12 | 显示全部楼层
这个错在哪里
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-3 23:24:06 | 显示全部楼层
  1. #include <iostream>

  2. #include <iomanip>

  3. #include <math.h>

  4. using namespace std;

  5. template <typename N1>                //定义了一个函数模板 虚拟类型参数为N1
  6. N1 swap (N1& a,N1& b)                //建立一个通用函数  函数的类型为N1
  7. {
  8.         N1 temp =a ;
  9.         a=b;
  10.         b=temp;
  11. }                        //既然函数的类型被int 代替 所以函数必须有 return  返回一个值

  12. int main(void)
  13. {
  14.         int t1=1,t2=2;               
  15.         swap(t1,t2);                        //当你要调用这个函数的时候 带入的是2个整形参数  这个时候 虚拟参数被int 代替 所以函数要有返回值 所以要用一个变量来接收返回值
  16.         cout << a<<b;                        // 你的a 和b 在函数swap 里面定义的 所以a 和b 的 作用域只限于 swap函数
  17.         system("pause");
  18.         return 0;
  19.        
  20. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-3 23:33:24 | 显示全部楼层
a,b没定义啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-4 12:59:15 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-4 14:21:29 | 显示全部楼层
传的参数类型不匹配啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-4 16:04:50 | 显示全部楼层
沫沫 发表于 2012-9-4 14:21
传的参数类型不匹配啊

传递的是2个整形的参数  怎么不匹配了?  他定义的函数模板  当传递是整形参数的时候 模板参数就被int 替代了 啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-4 16:05:17 | 显示全部楼层
无星之夜 发表于 2012-9-4 12:59
少年,编译器还出错,是在主函数的wap地方

没看懂  主函数里面没出错啊 错误就是在调用函数的时候出错的吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-4 18:56:18 | 显示全部楼层
丿夏夜灬彬刂 发表于 2012-9-4 16:05
没看懂  主函数里面没出错啊 错误就是在调用函数的时候出错的吧

编译器的错误提示是: call of overload 'swap (int &,int &) ' is ambiguous
哪里不清楚了。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-5 20:11:59 | 显示全部楼层
丿夏夜灬彬刂 发表于 2012-9-4 16:05
没看懂  主函数里面没出错啊 错误就是在调用函数的时候出错的吧

错误的原因已经找到了,原因是前面声明了using namespace std;而std的对象中有一个swap的函数,当我们使用自定义的swap函数的时候编译器认识你这个swap函数不知道使用std中的模版还是自定义的模版。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 23:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表