锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
妯℃澘涓疄鍙傜殑婕旂粠
鍙互鍏堢湅鐪嬩笅闈竴孌典嬌鐢ㄦā鏉跨殑浠g爜:
template聽
<
typename聽T
>
聽inline聽T聽
const
&
聽max(T聽
const
&
聽a,T聽
const
&
聽b)
{
聽聽聽聽聽聽聽聽聽聽聽聽
return
聽a
<
b
?
b:a;
聽聽聽聽聽聽聽聽聽聽聽聽}
#include聽
<
iostream
>
#include聽
<
string
>
using
聽
namespace
聽std;
int
聽main()
{
聽聽聽聽
//
-------------------姝g‘---------
聽聽聽聽
int
聽i
=
42
;
聽聽聽聽cout
<<
"
Max(7,i)
"
<<
::max(
7
,i)
<<
endl;
聽聽聽聽
double
聽f1
=
3.4
;
聽聽聽聽
double
聽f2
=-
6.7
;
聽聽聽聽cout
<<
"
Max(f1,f2):
"
<<
::max(f1,f2)
<<
endl;
聽聽聽聽
string
聽s1
=
"
abcd
"
;
聽聽聽聽
string
聽s2
=
"
bacd
"
;
聽聽聽聽cout
<<
"
max(s1,s2):
"
<<
::max(s1,s2)
<<
endl;
聽聽聽聽
//
-------------------鏈夐棶棰?-------
聽聽聽聽cout
<<
::max(
1
,
1.2
)
<<
endl;聽
//
榪欏彞浼?xì)鍑洪?/span>
聽聽聽聽}
鍦?span lang="EN-US">VC2005 EE緙栬瘧鐨勬椂鍊欙紝鍑虹幇閿欒錛岄敊璇爜鏄疌2782,鍙互鍦ㄩ檮甯︾殑甯姪涓?o:p>
鏌ョ湅榪欎釜閿欒鐮併?span lang="EN-US">
聽
鍙互鐪嬪埌閿欒淇℃伅鏄細(xì)
聽
聽
Error Message
'declaration' : template parameter 'identifier' is ambiguous
The compiler cannot determine the type of a template argument.
聽
聽聽聽榪欐剰鎬濇槸璇寸敵鏄庣殑妯℃澘鍙傛暟鏍囪瘑絎︽槸鏈変簩涔夋х殑錛岀紪璇戝櫒鏃犳硶鍐沖畾妯℃澘鍙傛暟鐨勭被鍨嬨?/span>
聽聽聽欏轟究闄勫甫涓婂府鍔╀腑緇欑殑渚嬪瓙濡備笅:
鍑虹幇2782閿欒鐨勶紝閭d箞鎴戜滑鎬庝箞瑙e喅鍛紵
鍙互鐢ㄤ笅闈笁縐嶆柟娉曪紝
鏂規(guī)硶涓錛氬瀹炲弬榪涜寮哄埗綾誨瀷杞崲錛岃浠栦滑鍙互浜掔浉鍖歸厤
max(static_cast<double>(1),1.2)鏂規(guī)硶浜岋細(xì)鏄劇ず鐨勬寚鍑?span lang="EN-US">T鐨勭被鍨?o:p>
max<double>(1,1.2)鏂規(guī)硶涓夛細(xì)鍙互鎸囧畾涓や釜鍙傛暟鍙互鍏鋒湁涓嶅悓鐨勭被鍨?span lang="EN-US">
閭d箞涓婇潰鐨勬ā鏉夸緥瀛愬彲浠ユ敼鍐欐垚涓嬮潰榪欐牱鐨?/span>
template聽<typename聽T1錛宼ypename聽T2錛?/span>>
聽inline聽T1聽max(T1聽const&聽a,T2聽const&聽b)
{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽a<b?b:a;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
涓婇潰榪欐牱瀹氫箟妯℃澘錛屽氨鍙互浼犻掍笉鍚岀殑鍙傛暟錛屼絾鏄繖鏍峰仛灝卞繀欏昏瀹氫箟濂借繑鍥炵被鍨嬶紝灝辨槸涓婇潰鐨?/span>T1錛岃繖鏄鏂規(guī)硶鐨勭己鐐廣傞櫎姝や箣澶栵紝鍥犱負(fù)涓や釜鍙傛暟綾誨瀷涓嶄竴鏍鳳紝鍦ㄨ繘琛岃繑鍥炵殑鏃跺欙紝浼?xì)鍦ㄦ妸鍙傛?/span>b杞寲鎴?/span>T1綾誨瀷鐨勬椂鍊欒嚜鍔ㄥ垱寤轟竴涓柊鐨勫眬閮ㄥ彉閲忥紝榪欐牱灝變笉鍙互鐢ㄥ紩鐢ㄤ簡(jiǎn)錛屽彧鑳借繑鍥?/span>T1錛岃屼笉鏄?/span>T1 const&銆?/span>
聽
template聽<聽typename聽returnType錛宼ypename聽T1錛宼ypename聽T2錛?/span>>
聽inline聽returnType聽max(T1聽const&聽a,T2聽const&聽b)
{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽a<b?b:a;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
榪欑鏂瑰紡鐨勬椂鍊欙紝瑕佷嬌鐢?span lang="EN-US">max鏂規(guī)硶灝遍渶瑕佹寚瀹歳eturnType鐨勭被鍨嬶紝
max<int,int,double>(1,1.2),鍥犱負(fù)鍦ㄦ垜浠繖涓緥瀛愰噷闈紝returnType鏄湪絎竴浣嶇疆錛屽悗闈袱涓被鍨嬫槸鍙互鏍規(guī)嵁杈撳叆鍙傛暟綾誨瀷鑷姩婕旂粠錛堝氨鐢ㄨ繖涓瘝鎶婏紝涔︿笂鏄繖涔堝彨鐨勶級(jí)鐨勶紝鎵浠ユ垜浠彲浠ュ彧鎸囧畾涓涓紝灝辨槸榪斿洖鐨勭被鍨嬶紝閭d箞鎴戜滑灝卞彲浠ヨ繖鏍峰啓浜?jiǎn)max<int>(1,1.2).
浠ヤ笂灝辨槸妯℃澘涓弬鏁扮殑婕旂粠浠ュ強(qiáng)鍑虹幇闂鐨勫熀鏈殑瑙e喅鏂規(guī)硶.
聽 浠ヤ笂閮ㄥ垎鏉ユ簮浜庨槄璇匯奀錛嬶紜Templates聽涓枃鐗堛?/span>