我有很多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'。它在开始时可能看起来很奇怪,因为参数不是*集*(而是迭代器),但它是一个合理的想法。 –