模板函数在C ++中返回更大的价值

时间:2015-04-02 05:23:03

标签: c++ function templates overloading

我希望能够返回两个值中的较大值,无论是整数,双精度还是类。我已经为我想要使用的类重载了比较运算符。该函数在main中给出了链接器错误。这是代码:

template <typename tType>
void returnGreater(tType &A, tType &B)
{
    if(A > B)
    {
        cout << "A is greater"; //testing
        return A;
    }
    else
    {
        cout << "B is greater"; //testing
        return B;
    }
}

2 个答案:

答案 0 :(得分:2)

更改退货类型。

template <typename tType>
tType& returnGreater(tType &A, tType &B)
^^^^^^ void is not the right return type for what you want to do.

PS 当您混合使用const和非const参数时,上述功能无法正常工作。您必须弄清楚如何解决该问题。

例如,您无法使用:

int i = 10;
int j = returnGreater(i, 20);

您可以使用显式类型来完成这项工作:

int j = returnGreater<int const>(i, 20); // OK.

答案 1 :(得分:0)

检查这个....

#include <iostream>

using namespace std;

template <typename tType>
tType& returnGreater(tType &A, tType &B){

    if(A > B)
    {
        cout << "A is greater"; //testing
        return A;
    }
    else
    {
        cout << "B is greater"; //testing
        return B;
    }
}

int main(){

    int a,b;
    cin>>a>>b;
    cout<< returnGreater(a,b)<<endl;
    return 0;

}

您的退货类型不正确。