2011-04-27 42 views
1

我是新來的模板編程。我有這樣的問題模板編程

A.process(B) 

其中A是一個模板參數。

我還可以將B設置爲模板參數嗎?通過這種方式,我可以讓不同類型的A對象處理不同類型的對象B. B通常不會在運行時多態使用。

謝謝。

+3

這個問題很可能被關閉,因爲它是非常模糊......請儘量會更加精確;也許包括一些代碼,在這些代碼中,您試圖按照自己的意願去做,並解釋哪些方面可以正常工作或無法正常工作,或者解決了編譯器錯誤。你也可以嘗試提供一個最小程序的其餘部分來使用這個功能:'A.process(B)'不會傳達太多,因爲有些語句是矛盾的(例如罰款......將B設置爲模板參數? ,這意味着B是一個積分常數,但稍後你會談到「類型的對象B」,表明B是一種類型)。 – 2011-04-27 08:48:28

回答

3

如果我理解你的需求,然後是 - 你可以這樣做:

template <typename A, typename B> 
void fn(A& a, B& b) 
{ 
    ...other code... 
    a.process(b); 
    ...other code... 
} 
+2

我不確定這是否是要求。國際海事組織,他/她想要一個成員函數模板'template A :: process(B b)',但這也可以通過'A'進行參數化。 – 2011-04-27 08:50:25

+0

@Oli:「也可以通過A參數化」 - 這是雙重調度嗎?如果沒有,我敢肯定我不會是那個給出答案的人:-)。 – 2011-04-27 09:10:09

+0

這是我的理解,是的! – 2011-04-27 09:59:51