概述
#include
#include
using namespace std;
template
inline T min( const T& a, const T& b)
{
return a > b ? b : a;
}
template //这句不能省,否则出错
inline T max( const T& c, const T& d )
{
return c > d ? c : d;
}
template
int compare( const T& strA, const L& strB )
{
string str_A(strA), str_B(strB);
//用C风格的数组构造string对象
try
{
if( str_A > str_B )
return 1;
else if ( str_A == str_B )
return 0;
else
return -1;
}
catch(exception ex)
{
cout << "compare exception!" << endl;
}
return 0;
//省略这句会有---warning C4715: 'compare' : not all control paths return a value
}
int main(void)
{
string str_A("hi"), str_B("world");
cout << min( 'a', 'b') << endl;
cout << min( 12, 11) << endl;
cout << min( 13.24, 10.01) << endl;
cout << max( 10, 11) << endl;
cout <<
compare( "hi", "world") << endl;
return 0;
}
补充说明:
若将compare模板函数申明为如下形式:
template
int compare( const T& strA, const T& strB )
则红色标记语句会有如下错误:
template parameter 'T' is ambiguous
could be 'char [6]'
or
'char [3]'
即类型不匹配问题。解决办法就是如下方式申明compare模板函数:
template T, typename L>
int compare( const T& strA, const L& strB )
#include
using namespace std;
template
inline T min( const T& a, const T& b)
{
}
template
inline T max( const T& c, const T& d )
{
}
template
int compare( const T& strA, const L& strB )
{
}
int main(void)
{
}
补充说明:
若将compare模板函数申明为如下形式:
template
int compare( const T& strA, const T& strB )
则红色标记语句会有如下错误:
template parameter 'T' is ambiguous
could be
即类型不匹配问题。解决办法就是如下方式申明compare模板函数:
template T, typename L>
int compare( const T& strA, const L& strB )
最后
以上就是贤惠煎饼为你收集整理的C++函数模板的全部内容,希望文章能够帮你解决C++函数模板所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复