具有包含指向对象的指针的 vector ,然后使用clear函数不会调用 vector 中对象的析构函数。我创建了一个函数来手动执行此操作,但是我不知道如何使它成为 vector 中可能存在的任何对象的通用函数。
void buttonVectorCleanup(vector<Button *> dVector){
Button* tmpClass;
for(int i = 0; i < (int)dVector.size(); i++){
tmpClass = dVector[i];
delete tmpClass;
}
}
这是我拥有的功能,对于 vector 中的特定类型的对象都可以正常工作,但是我想使用一个函数,可以将任何类型的 vector 与对象指针一起使用。
最佳答案
最好的办法是使用智能指针,例如Boost中的指针。然后,对象将被自动删除。
或者你可以做一个模板功能
template <class T>
void vectorCleanup(vector<T *>& dVector){
T* tmpClass;
for(vector<T*>::size_type i = 0; i < dVector.size(); i++){
tmpClass = dVector[i];
delete tmpClass;
}
}