说,我得到了C++容器类类型转换
Set<DerivedClass*> set1;
我得到了
Set<BaseClass*> set2;
我如何做到这一点?
Set<BaseClass*> set3 = set1.substract(set2); //static cast!
说,我得到了C++容器类类型转换
Set<DerivedClass*> set1;
我得到了
Set<BaseClass*> set2;
我如何做到这一点?
Set<BaseClass*> set3 = set1.substract(set2); //static cast!
你可以像static_pointer_cast
创造的东西。即您需要一个可以执行static_cast
从一个Set
专业化到另一个的独立模板。
使用
但是您必须使用第二个,并提供自己的二元谓词。默认谓词运算符<将比较指针。你可能想要做的是比较 的值,因此需要提供自己的谓词。
如果你想投SET2同一类型的设置1,我强烈建议你不这样做。你可能会逃脱一个的reinterpret_cast,只要不。减去不修改其参数,但它是一个非常坏主意。
你真正需要的是一个非成员函数和,作为Dave18说,你可能想在std :: set_difference功能 - 除了你就会有不匹配的迭代器类型的问题。
一个解决方案是开发自己的“适配器”迭代器类,它主要是通过原来的迭代器通过电话,但提领时确实需要的演员。
不是写你自己的迭代器适配器被重用别人更好。我认为boost::iterator_adaptor看起来可能是候选人,但我没有正确地检查。
'substract'是如何声明的? – 2010-07-15 07:11:42
设置和减(const的设置及其他) –
2010-07-15 07:16:15
什么是“设置”类? – adf88 2010-07-15 08:04:57