#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 )