C++模板显示指定类型时使用引用遇到的问题
1.问题
这里我想让模板函数接收int和char类型的参数,并进行相加,显示指定参数类型为int。
第一个调用理论上会自动将char类型强转成int类型,后进行相加;
第二个调用理论上会自动将int类型强转成char类型,后进行相加;
但是报错No matching function for call to 'add_ab'
template<typename T>
T add_ab(T &a, T &b) {
return a + b;
}
int a1 = 1;
char b1 = 'b';
cout << add_ab<int>(a1, b1) << endl;
cout << add_ab<char>(a1, b1) << endl;
2.解决
T &A,T &B 错误的原因是因为传入的是地址(隐式指针),该指针对应的b的内存区域还是char类型 ;
你告诉编译器用int 类型 但是实际上 return a + b;中的 b 会自动转为*b(引用),这里的*b还是char 所以错误
这里使用T add_ab(T a, T b);值传递即可。
template<typename T>
T add_ab(T a, T b) {
return a + b;
}
分类:
C++学习 / 模板
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了