我正在获取需要传递给派生类指针 vector 的基类指针 vector ,请建议执行相同操作的最佳方法。
一种方式是
用基类ptr vector 大小创建一个新的派生类 vector
循环传入 vector
动态转换基指针并填充派生 vector 。
请建议是否有更好的方法让编译器相信 vector 是针对多态类型的。
最佳答案
如果我没看错,你有以下情况
class Base {};
class Derived: public Base {};
class Derived2: public Base {};
void foo(const vector<Derived*>&);
void bar()
{
vector<Base*> baseVec;
// Fill baseVec with pointers to Derived objects
foo(baseVec); // Does not work
}
问题是,虽然Base
和 Derived
通过继承相关,类型 vector<Base*>
和 vector<Derived*>
完全无关。两者之间没有转换。
此外,还有一个额外的问题 baseVec
还可以包含指向其他 派生类的指针,例如 Derived2
, 和 foo
无法处理这些。
唯一真正的解决方案是
- 问题中概述的那个:创建一个新的
vector<Derived*>
并用dynamic_cast
填充它编辑源 vector 的内容 - 避免在程序中出现此类类型不匹配。
关于c++ - 从 baseclassptrVec 类型转换派生类 ptr_Vector,最好的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4552582/