c++写一个模板 Compare函数

对int,char*,int *,double类型的两个数据进行比较

模板:
int Compare(T a, U b)
{
    if (a>b)
    {
        return 1;
    }
   if (a == b)
    {
        return 0;
    }
   if (a < b) 
        return -1;
}

测试代码:

#include<stdlib.h>
#include<iostream>
#include<string>
#include<vector>
using namespace std;



template<class T,class U>
int Compare(T a, U b)
{
    if (a>b)
    {
        return 1;
    }
   if (a == b)
    {
        return 0;
    }
   if (a < b) 
        return -1;
}

void MInt()
{
    int a = 3;
    int b = 5;
    if (Compare<int, int>(a, b) ==0)
        cout << "a == b" << endl;
    else if (Compare<int, int>(a, b) > 0)
    {
        cout << "a > b" << endl;
    }
    else if (Compare<int, int>(a, b) < 0) 
        cout << "a < b" << endl;
}

void MDouble()
{
    double a = 4.0;
    double b = 5.0;
    if (Compare<double, double>(a, b) == 0)
        cout << "a == b" << endl;
    else if (Compare<double, double>(a, b) > 0)
    {
        cout << "a > b" << endl;
    }
    else if (Compare<double, double>(a, b) < 0)
        cout << "a < b" << endl;
}

void _MInt()
{
    int * a = new int;
    *a = 3;
    int *b = new int;
    *b = 5;
    if (Compare<int*, int*>(a, b) == 0)
        cout << "a == b" << endl;
    else if (Compare<int*, int*>(a, b) > 0)
    {
        cout << "a > b" << endl;
    }
    else if (Compare<int*, int*>(a, b) < 0)
        cout << "a < b" << endl;
}

void _MDouble()
{
    double *a = new double;
    *a = 3.0;
    double *b = new double;
    *b = 5.0;
    *b = 5;
    if (Compare<double*, double*>(a, b) == 0)
        cout << "a == b" << endl;
    else if (Compare<double*, double*>(a, b) > 0)
    {
        cout << "a > b" << endl;
    }
    else if (Compare<double*, double*>(a, b) < 0)
        cout << "a < b" << endl;

}
int main()
{
    MInt();
    MDouble();
    _MInt();
    _MDouble();
    system("pause");
    return 0;
}

模板那里写丢了模板声明,加上template<class T,class U>

template
bool Compare(T1 t1,T2 t2)
{
if(t1>t2)
return true;
if(t1<t2)
return false;
}