您对此功能有何看法?
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&gt; *)':
test.cpp:160:错误:输入'class std :: vector&gt;'赋予'删除'的参数,预期指针 test.cpp:在成员函数'virtual void Koala :: ListAddressAction :: execute()':
test.cpp:176:错误:没有匹配函数来调用'Koala :: ListAddressAction :: deleteVector(std :: vector&gt; *&amp;)'
test.cpp:157:注意:候选人是:void Koala :: ListAddressAction :: deleteVector(std :: vector&gt; *)
我认为这是因为我从[]运算符中获取了一个引用...但我不知道如何解决它......
谢谢...
答案 0 :(得分:2)
v
是一个指针,因此在使用下标运算符之前,您需要取消引用它:
for (int i = 0; i < v->size(); i++)
delete (*v)[i];
// ^^^^
或者,您可以使用显式运算符语法:
delete v->operator[](i);
答案 1 :(得分:0)
v
是您传入的指针。当您执行v[i]
时,您正在访问i
vector
。真的,你只有一个向量,你想要delete
它的元素。为此,首先取消引用指针:
delete (*v)[i];