我正在获取需要传递给派生类指针向量的基类指针向量,请提出最佳方法。
一种方法是
使用基类ptr向量的大小创建一个新的派生类向量
循环传入的向量
动态转换基本指针并填充导出的向量。
请建议是否有更好的方法可以说服编译器该向量适用于多态类型。
最佳答案
如果我理解正确的问题,则您遇到以下情况
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
内容填充避免在程序中出现此类类型不匹配的情况。
关于c++ - 类型转换从baseclassptrVec派生的类strVector,最好的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4552582/