我有很多Java經驗,但對C++來說是新的。C++ - 具有多種參數類型的方法
我需要一個方法,簡單的例子是設置聯合,這將使用參數set<int>
和set<bool>
,但沒有其他類型。
此刻我重載了方法名稱,但它在方法體中重複了很多類似的代碼。
有沒有更好的方法?謝謝!
我有很多Java經驗,但對C++來說是新的。C++ - 具有多種參數類型的方法
我需要一個方法,簡單的例子是設置聯合,這將使用參數set<int>
和set<bool>
,但沒有其他類型。
此刻我重載了方法名稱,但它在方法體中重複了很多類似的代碼。
有沒有更好的方法?謝謝!
您可以編寫一個Function Template。
但是,如果您正在執行類似的操作,無論參數類型如何,您都可以這樣做。如果你對每種數據類型執行不同的操作,那麼你將不得不專門化模板函數,這基本上可以讓你回到你的問題。
template <typename T>
void func(const std::set<T> ¶m)
{
// your staff
}
//....
int main()
{
std::set<int> int_set;
std::set<bool> bool_set;
func(int_set);
func(bool_set);
}
我覺得OP只想讓'std :: set
爲什麼你需要一種「不能與其他類型一起工作」的方法? 'SetUnion>'編譯是否真的有問題? –
MSalters
在標準庫中已經實現了一個'std :: set_union'。它在開始時可能看起來很奇怪,因爲參數不是*集*(而是迭代器),但它是一個合理的想法。 –