我正在爲字符串編寫比較器。不過,我希望它可以用於字符串和char * s。 類似於StringComparer<std::string, std::string>
和StringComparer<const char *, const char*>
。當然,在執行Stringcomparer<const char *, const char *>
的時候,我會簡單地爲這兩個字符串做一個std::string Stringversion(<pass the const char* here>)
,並簡單地調用Stringcomparer<std::string, std::string>
。提供模板化函數的多個實現,每次處理特定類型
如何爲我的Stringcomparer編寫兩個這樣的模板化函數。
我一直在尋找這和所有我能找到到處是人們定義的函數像這樣的例子:
template <typename T> foo(T&)
{
//some operation on T that does depends on operators or functions that can handle any //type like sort or cout. basically there are showing that this fucntion can be used to sort //both integer and string vectors or it can cout both integers and floats.
}
能否請你告訴我,我能提供給我的stringcomparer的多個變體。當然,有些時候人們需要編寫單獨的例程來處理每種類型。這是如何完成的。
爲什麼不只是超載?那麼非標準'basic_string's呢? –
@KerrekSB更好地問OP! – polkadotcadaver
@KerrekSB我不能使用重載,因爲我正在爲已經存在的代碼庫編寫代碼,它需要模板化函數。 (已經實現了一個測試套件)你能解釋一下你對「非標準基本字符串」的查詢嗎? – Chani