回 帖 发 新 帖 刷新版面

主题:各位,麻烦帮忙看下这个程序啦!程序里的函数模板为甚么调用不了呢?

#include<iostream>
using namespace std;

template<class T>
void swap( T x1, T x2 )
{
    T x;
    x = x1;
    x1 = x2;
    x2 = x;
}
void swap( int x1, int x2 )
{
    int x;
    x = x1;
    x1 = x2;
    x2 = x;
    return ;
}
int main()
{
    char c1 = 'a', c2 = 'y';
    swap( c1, c2 );    //调用生成的char型模板函数
    int t1 = 8, t2 = 7;
    swap( t1, t2 );
    char y1 = 'f';
    double y2 = 5.6;
    swap( y1, y2 );
    return 0;
}

回复列表 (共1个回复)

沙发

几个问题. 1, template function 了, 后面的居然重载了一个实例.(int, int).显然是错误的.2. 把swap改下名字.和库有重名的. 3. 最后一个实例化,(char, double) ,有这样做的么? 你定义的是(class T, class T),同类型, 后面却char ,double 不同类型.显然也是错的. 代码贴给你.
#include<iostream>
using namespace std;

template<class T>
void my_swap( T x1, T x2 )
{
    T x;
    x = x1;
    x1 = x2;
    x2 = x;
}
/*
void swap( int x1, int x2 )
{
    int x;
    x = x1;
    x1 = x2;
    x2 = x;
    //return ;
}
*/
int main()
{
    char c1 = 'a', c2 = 'y';
    my_swap( c1, c2 );    //调用生成的char型模板函数
    int t1 = 8, t2 = 7;
    my_swap( t1, t2 );
/*
    char y1 = 'f';
    double y2 = 5.6;
    my_swap( y1, y2 );
*/
    return 0;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册