你觉得这个函数怎么样?
void deleteVector(vector<Persistent*> *v) {
if (v) {
for (int i = 0; i < v->size(); i++)
delete v[i];
delete v;
}
}
我一直得到以下错误:
test.cpp:在成员函数'void Koala::ListAddressAction::deleteVector(std::vector>*)'中:
test.cpp:160:错误:类型'class std::vector>'参数给定给'delete',预期的指针test.cpp:在成员函数'virtual void Koala::ListAddressAction::execute()':
test.cpp:176:错误:没有匹配的函数调用'Koala::ListAddressAction::deleteVector(std::vector>*&)'
test.cpp:157:注:候选人为:void Koala::ListAddressAction::deleteVector(std::vector>*)
我想这是因为我从[]操作符得到了一个引用…但我不知道如何解决它。
谢谢…
v
是一个指针,因此在对其使用下标操作符之前需要对其解引用:
for (int i = 0; i < v->size(); i++)
delete (*v)[i];
// ^^^^
或者,您可以使用显式操作符语法:
delete v->operator[](i);
v
是您传入的指针。当你访问v[i]
时,你访问的是i
和vector
。实际上,你只有一个向量,你想要delete
它的元素。要做到这一点,首先取消对指针的引用:
delete (*v)[i];