2011-10-23 48 views
3

我想製作一個模板化構造函數,但是我發現我沒有明確列出模板參數的方法,所以我不得不尋找另一個解決方案。以下是我所做的:模擬模板構造函數。太奇怪了?

ResourceManager rm = ResourceManager::Create<physfs::ifstream>(); 

您是否有任何其他想法可以在施工後實現此目標?或者這是一個足夠好的解決方案(不太奇怪)?

注意:我使用移動構造函數(這是唯一的公共構造函數)來避免創建不必要的類副本。

+0

[我的這個問題]的答案(http://stackoverflow.com/questions/6230448/is-it-possible-to-have-a-templated-constructor-like-templateclass-tx)也應該回答你的問題。 (無法刪除評論,因爲SO的移動視圖不會讓我......) – Xeo

+0

@Xeo是的,我知道這個限制。我想知道有哪些解決方法。 –

+0

我以前見過這個。我知道繞過它的唯一方法是將模板類型的實例傳遞給構造函數,以便編譯器自動推導出類型。或者對模板參數使用std :: constant_integer 。 –

回答

1

我認爲你的代碼應該這樣做。爲了改進設計,可以考慮在ResourceManager中聲明類型(例如),並根據需要使用它來限定構造函數。