C++ C++;容器类类型转换

C++ C++;容器类类型转换,c++,containers,C++,Containers,说吧,我有 Set<DerivedClass*> set1; 设置set1; 我得到了 Set<BaseClass*> set2; 设置set2; 我该怎么做 Set<BaseClass*> set3 = set1.substract(set2); //static cast! Set set3=set1.减法(set2)//静态演员! 试试看您可以创建如下内容。i、 e.您需要能够执行从一个集到另一个集的静态转换的备用模板。使用 但是,您必须使用

说吧,我有

Set<DerivedClass*> set1;
设置set1;
我得到了

Set<BaseClass*> set2;
设置set2;
我该怎么做

Set<BaseClass*> set3 = set1.substract(set2); //static cast!
Set set3=set1.减法(set2)//静态演员!

试试看

您可以创建如下内容。i、 e.您需要能够执行从一个
集到另一个
集的
静态转换的备用模板。

使用


但是,您必须使用第二个并提供自己的二进制谓词。默认谓词运算符如果要将set2强制转换为与set1相同的类型,我强烈建议您不要这样做。只要substract不修改它的参数,就可以进行重新解释,但这是一个非常糟糕的主意

您真正需要的是一个非成员函数,正如Dave18所说,您可能需要std::set_difference函数——但您会遇到迭代器类型不匹配的问题

一个解决方案是开发您自己的“适配器”迭代器类,该类主要将调用传递给原始迭代器,但当取消引用时会执行所需的转换


比编写自己的迭代器适配器更好的是重用别人的迭代器适配器。虽然我没有正确检查,但我认为看起来很可能是候选对象。

Set&subtract(const Set&other)什么是“Set”类?+1-但仍然存在不匹配迭代器类型的问题。