2012-06-26 38 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