woshijunjun 发表于 2021-6-18 16:53:59

c++函数模板

#include<iostream>
using namespace std;
template <typename T>
T MAX(T*array,T n)
{
        int j=0;
        for(int i=1;i<n;i++)
        {
                if(array>array)
                {
                        j=i;
                }
        }
        return array;
};
int int_array[]={1,2,3,4,5,6};
double double_array[]={1.1,2.2,3.3,4.4,5.5,6.6};/////如果把double换成float,程序就会出问题
int main()
{
        int iaver=MAX(int_array,6);
        double faver=MAX(double_array,6.0);
        cout<<"该整型数组的最大值是:"<<iaver<<endl;
        cout<<"该单精度型数组的最大值是:"<<faver<<endl;
        return 0;
}
求大神解惑!

人造人 发表于 2021-6-18 17:23:40

#include <iostream>

using namespace std;

    template <typename T>
T MAX(T*array,T n)
{
    int j=0;
    for(int i=1;i<n;i++)
    {
      //if(array>array)
      if(array>array)   // 这样?
      {
            j=i;
      }
    }
    return array;
};
int int_array[]={1,2,3,4,5,6};
float double_array[]={1.1,2.2,3.3,4.4,5.5,6.6};/////如果把double换成float,程序就会出问题
int main()
{
    int iaver=MAX(int_array,6);
    float faver=MAX(double_array,(float)6.0);
    cout<<"该整型数组的最大值是:"<<iaver<<endl;
    cout<<"该单精度型数组的最大值是:"<<faver<<endl;
    return 0;
}

woshijunjun 发表于 2021-6-18 19:11:50

人造人 发表于 2021-6-18 17:23
#include

using namespace std;


可以了,可以了,可是我不懂为什么在6.0前加一个float就好了呢?

人造人 发表于 2021-6-18 19:15:47

woshijunjun 发表于 2021-6-18 19:11
可以了,可以了,可是我不懂为什么在6.0前加一个float就好了呢?

因为 6.0 是 double 类型的
要强制转换成 float 类型

woshijunjun 发表于 2021-6-18 19:17:46

人造人 发表于 2021-6-18 19:15
因为 6.0 是 double 类型的
要强制转换成 float 类型

好的,谢谢啦!
页: [1]
查看完整版本: c++函数模板