是否可以執行標題中描述的操作?下面是我想要做的具體示例:將矢量<derived> :: iterator轉換爲矢量<base> :: 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也不起作用。有沒有一個好的方法來做到這一點?我該如何迭代派生類對象的向量作爲基類對象的向量呢?
這是我最大的監督之處。我曾想過在這個問題的不同背景下這樣做,但不是目前的問題。謝謝! – 2013-03-13 20:26:16
注意,如果您使用的是C++ 11,可以這樣寫同樣的迭代(使用多態): *** for(Base&base:vectorOfDerived)***(如果從begin()迭代到結束()而不移動或添加元素) – 2013-03-13 21:02:42