我正在获取需要传递给派生类指针向量的基类指针向量,请提出最佳方法。

一种方法是

使用基类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
}


问题是,尽管BaseDerived是通过继承关联的,但类型vector<Base*>vector<Derived*>却是完全不相关的。两者之间没有转换。
另外,还有一个问题,就是baseVec也可能包含指向其他派生类的指针,例如Derived2,而foo无法处理它们。

唯一真正的解决方案是


问题中概述的内容:创建一个新的vector<Derived*>并使用源矢量的dynamic_cast内容填充
避免在程序中出现此类类型不匹配的情况。

关于c++ - 类型转换从baseclassptrVec派生的类strVector,最好的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4552582/

10-13 09:31