C++将std :: vector <Derived>*转换为std :: vector <Base> ...?

Uso*_*chi 1 c++ stl casting vector c++11

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

    std::vector<std::vector<Base>*> all; // vector keeping pointers to vectors
Run Code Online (Sandbox Code Playgroud)

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

    std::vector<Derived1> derived1; // vector of derived class
    std::vector<Derived2> derived2; // vector of derived class
    std::vector<Derived3> derived2; // vector of derived class
Run Code Online (Sandbox Code Playgroud)

有没有从改变指针的类型的任何安全的方式vector<DerivedX>vector<Base>

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

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

D.R*_*.R. 9

不,那是不可能的.std::vector<Base>和之间没有任何关系std::vector<Derived>.

换句话说:std::vector<Derived>不是源于std::vector<Base>.