Vector Iterators Casting
c++, casting, pointers, vector
Solution
while (!myVector.empty())
{
((DerivedClass*)(myVector.back()))->Shutdown();
myVector.pop_back();
}
Notes:
- You should probably use `dynamic_cast` instead of the hard cast. (If it's sure that there are only `DerivedClass` objects in the vector, why isn't it `std::vector<DerivedClass>`?)
- You should probably not have to cast at all, since `Shutdown()` should be declared in the base class.
- You should probably delete the objects, too, before you pop them off the vector. (But that might not be so.)
- You should probably use a smart pointer which calls `Shutdown()` (and `delete`, probably).
Edit: Using `std::vector<T>::clear()`, as shown by markh44 is probably better than the `pop_back()`.
Problem
Hey, In C++, I have a vector of type: ``` vector<BaseClass*> myVector; ``` In which, I insert (push_back) pointers of derived classes into it. Now, I want to pop back its elements so I do this: ``` 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(); } ``` but as mention in the comments before I pop it, I need to call its Shutdown() method and the cast is not working properly too. Any resolutions? or is impossible?