无法从c ++中的向量中删除void指针

use*_*497 1 c++ pointers vector void

大家好我试图从vector中删除void指针,程序在删除时崩溃.非常感谢你!

template <class T> class tArray_t : public vpArr_t {
  virtual ~tArray_t() {

   for (vector<void*>::iterator it = array.begin() ; it != array.end(); )
   {
          vector<void*>::iterator nextElement = it+1;
          delete *it; // here is the crash
          it = nextElement; 
   }
Run Code Online (Sandbox Code Playgroud)

};

n. *_* m. 9

删除void指针是未定义的.你得到了你所要求的.

vector<T*>而不是vector<void*>.如果您vector<void*>继承自基类,则必须T*在删除之前将指针强制转换.

delete static_cast<T*>(*it);
Run Code Online (Sandbox Code Playgroud)

您可能还想节省一些工作和使用boost::ptr_vector.