【发布时间】:2021-08-08 23:30:58
【问题描述】:
有没有办法使用多态来为集合和多集合提供泛型?如下。
注意:但仅适用于集合,(set, multiset)
template<typename T>
void foo(parent_set<T> &s) {
// do something
}
// main
set<int> s1 = {1, 2, 3, 4, 5};
foo(s1);
multiset<int> s2 = {1, 2, 2, 2, 2, 3};
foo(s2);
【问题讨论】:
-
既然你一直在使用模板,你可以只为整个容器类型做模板。
-
在不相关的类型之间不能有多态行为(即没有继承关系)。相反,在这种情况下,您可以只依靠使用模板进行鸭式打字。
标签: c++ set polymorphism std multiset