可能的重复:
是否可以将 Base 类型的 STL 容器转换为 Derived 类型?
这应该是一个简单的问题...如果我有一个基类的容器,例如 STL 列表,是否可以将整个容器转换为子类类型?例如。
[A inherits from base class B]
list<B*> list1;
list1.push_back(new A());
list<A*> list2 = list1;
编译器抱怨:“conversion from std::vector<B*, std:allocator<B*> >' to non-scalar type 'std::vector<Bar*, ...>' requested.
"
这可能吗,还是我只是搞砸了?
No. std::list<T>
and std::list<U>
是完全不同的、不兼容的类型,如果std::is_same<T,U>::value
is false
,即如果类型参数T
and U
不一样。
Use std::transform
并在回调中进行适当的转换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)