C ++将std :: vector <derived> *转换为std :: vector <base /> ...?

时间:2015-07-08 21:50:20

标签: c++ c++11 vector casting stl

我正在制作一个向量指针的向量:

    std::vector<std::vector<Base>*> all; // vector keeping pointers to vectors

问题是我有几个派生类的向量:

    std::vector<Derived1> derived1; // vector of derived class
    std::vector<Derived2> derived2; // vector of derived class
    std::vector<Derived3> derived2; // vector of derived class

有没有安全的方法可以将指针类型从vector<DerivedX>更改为vector<Base>

每个派生类都会分享某些行为,并且在程序的大部分时间里它们都会存在。

如果有任何关于细节的问题出现,我仍然不擅长解释我的编程问题 - 请在评论中提问。

1 个答案:

答案 0 :(得分:9)

不,那是不可能的。 NumberCalls = pivot_table.stack().astype(int).tolist()std::vector<Base>之间没有任何关系。

换句话说:std::vector<Derived>不是来自std::vector<Derived>