在模板中,如果我们创建一个函数并通过引用传递变量地址作为参数,它将提供所需的输出

时间:2015-10-26 15:50:29

标签: c++ templates

下面给出的代码与c ++中的模板概念有关。 传递变量时,我得不到合适的结果。 我的预期输出是交换数字。 但是,编译器显示错误。

#include<iostream>

using namespace std;

template <class T>
void swap(T& a,T& b)
{
    T temp;
    temp=a;
    a=b;b=temp;
}

int main()
{
    int a1,b1;
    cin>>a1>>b1;
    swap(a1,b1);
    cout<<a1<<endl<<b1<<endl;
}

1 个答案:

答案 0 :(得分:0)

摆脱'using namespace std;'因为在std命名空间中交换功能模板已经定义。

另一种解决方案,你可以专门交换。但是您只能专门为用户定义的类型标准化函数

    #include<iostream>

    using namespace std;
    struct Int
    { 
        int i;
    };

    namespace std{
    template <>
    void swap<Int>(Int& a,Int& b)
    {
        Int temp;
        temp=a;
        a=b;b=temp;
    }
    }


    int main()
    {
        Int a1,b1;
        std::cin>>a1.i>>b1.i;
        swap(a1,b1);
        std::cout<<a1.i<<std::endl<<b1.i<<std::endl;
    }