c – 从vector :: iterator转换为vector :: iterator

是否可以进行标题中描述的操作?这是我想要做的具体例子:

#include <vector>
class Base{
public:
    Base(int t){tst = t;}
protected:
    int tst;
};

class Derived : public Base{
public:
    Derived(int t):Base(t){} 
};

int main(){
    std::vector<Derived> test;
    test.push_back(Derived(1));
    std::vector<Base>::iterator iTest = test.begin();
}

最后一行失败了.使用static_cast也不起作用.有没有办法做到这一点?我怎么能迭代派生类对象的向量作为基类对象的向量,否则?

解决方法:

你不能将它们一起转换.

我想你需要这样的东西:

std::vector<Base*> test;
test.push_back( new Derived(1) );

std::vector<Base*>::iterator iTest = test.begin();

// ....

// cleanup 

然后享受多态性优势.

上一篇:c – 两个不同类的运行时多态性


下一篇:c – 多态指针的typeid?