具有包含指向对象的指针的 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;
    }

}

08-16 01:59