小鸟游菜花 2023-12-04 21:18 采纳率: 86.5%
浏览 0
已结题

关于重载的使用,函数模板

这里出现了多种错误,哪里错了,怎么改


#include<iostream>
using namespace std;

template <typename T>
T max(T a, T b)
{
    cout<<"常规函数模板max"<<endl;
}

template <typename T>
T max(T a, T b)
{
    cout<<"常规函数模板max"<<endl;
}

double max(double a, double b)
{
    cout<<"普通函数max"<<endl;
}

int main()
{
    int i=1, j=2;
    max(1.2, 3.4); // 显式指定模板参数类型
    max(i, j); // 显式指定模板参数类型
    max(1.2, 3); // 由于1.2是double类型,3是int类型,所以会调用常规函数不同类型数据模板max
    return 0;
}

img

  • 写回答

2条回答 默认 最新

  • 柯本 2023-12-04 21:34
    关注

    首先max是C++标准函数,你的max与系统冲突了
    其次,你其中多定义了个,以下是改好的可以运行的

    
    #include <iostream>
    using namespace std;
    template <typename T> T mymax(T a, T b)
    {
      cout << "常规函数模板mymax" << endl;
      return (a>b)?a:b;
    }
    /*这个与上面重复了
    template <typename T> T mymax(T a, T b)
    {
      cout << "常规函数模板mymax" << endl;
    }
    */
    double mymax(double a, double b)
    {
      cout << "普通函数mymax" << endl;
       return (a>b)?a:b;
    }
    int main()
    {
      int i = 1, j = 2;
      mymax(1.2, 3.4); // 显式指定模板参数类型
      mymax(i, j);     // 显式指定模板参数类型
      mymax(1.2, 3); // 由于1.2是double类型,3是int类型,所以会调用常规函数不同类型数据模板mymax
      return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月12日
  • 已采纳回答 12月4日
  • 创建了问题 12月4日

悬赏问题

  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响
  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题