aki*_*kif 5 c++ pointers casting vector
嘿,在C++中,我有一个类型的向量:
vector<BaseClass*> myVector;
Run Code Online (Sandbox Code Playgroud)
其中,我将派生类的(push_back)指针插入其中.
现在,我想回弹它的元素,所以我这样做:
vector<ADlgcDev*>::iterator iter;
for (iter = myVector.rbegin(); iter != myVector.rend(); iter++)
{
// but before I pop it, I need to shutdown it down
// so I cast this
// but this way, I'm unable to call the function
(DerivedClass*(*iter))->Shutdown();
myVector.pop_back();
}
Run Code Online (Sandbox Code Playgroud)
但正如我在弹出之前的评论中所提到的,我需要调用它的Shutdown()方法并且演员也不能正常工作.任何决议?还是不可能?
sbi*_*sbi 13
while (!myVector.empty())
{
((DerivedClass*)(myVector.back()))->Shutdown();
myVector.pop_back();
}
Run Code Online (Sandbox Code Playgroud)
笔记:
dynamic_cast而不是硬铸造.(如果确定DerivedClass向量中只有对象,为什么不呢std::vector<DerivedClass>?)Shutdown()应该在基类中声明.Shutdown()(delete可能)的智能指针.编辑:使用std::vector<T>::clear(),如markh44所示可能比pop_back().