2012-06-26 49 views
0

我有很多Java經驗,但對C++來說是新的。C++ - 具有多種參數類型的方法

我需要一個方法,簡單的例子是設置聯合,這將使用參數set<int>set<bool>,但沒有其他類型。

此刻我重載了方法名稱,但它在方法體中重複了很多類似的代碼。

有沒有更好的方法?謝謝!

+0

爲什麼你需要一種「不能與其他類型一起工作」的方法? 'SetUnion >'編譯是否真的有問題? – MSalters

+0

在標準庫中已經實現了一個'std :: set_union'。它在開始時可能看起來很奇怪,因爲參數不是*集*(而是迭代器),但它是一個合理的想法。 –

回答

2

您可以編寫一個Function Template
但是,如果您正在執行類似的操作,無論參數類型如何,您都可以這樣做。如果你對每種數據類型執行不同的操作,那麼你將不得不專門化模板函數,這基本上可以讓你回到你的問題。

1
template <typename T> 
void func(const std::set<T> &param) 
{ 
    // your staff 
} 

//.... 

int main() 
{ 
    std::set<int> int_set; 
    std::set<bool> bool_set; 

    func(int_set); 
    func(bool_set); 
} 
+0

我覺得OP只想讓'std :: set '和'std :: set ',所以需要一些額外的模板魔法。 – juanchopanza