对整个向量进行强制类型转换

5

是否可以将一个std :: vector < std :: shared_ptr < Object >>强制转换为std :: vector < std :: shared_ptr < SpecializedObject >>,其中SpecializedObject继承自Object,而不建立新数组(或迭代向量)?


2
简短回答:不行。长话短说:真的不行。 - skypjack
即使存储的数据被保证为std::shared_ptr<SpecializedObject>,@skypjack也是如此吗? - Talesseed
@Talesseed:确实。你仍然有两种基本不相关的元素类型。 - Lightness Races in Orbit
1
如果您可以保证向量中的内容类型,为什么不一开始就创建一个该类型的向量呢? - user2100815
1
嗯,是的,这是一个解释。不过,使用一个变体向量的向量可能更有意义。 - Lightness Races in Orbit
显示剩余6条评论
1个回答

6
短答案:不行。
长答案: std::vector> 和 std::vector> 是完全不同且无关的类型,你不能将一个类型转换为另一个。 你必须遍历vector并从中创建一个新的vector。
提示:在迭代时仍然可以使用static_pointer_cast来转换指针(如果你知道你在做什么的话)。

好的,虽然有点遗憾。 - Talesseed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接