【问题标题】:Error while deleting a vector pointer to pointers删除指向指针的向量指针时出错
【发布时间】:2013-04-14 18:56:46
【问题描述】:

你觉得这个功能怎么样?

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 >*)

我认为这是因为我从 [] 运算符获得了引用...但我不知道如何解决它...

谢谢...

【问题讨论】:

  • 真正的问题是你真的需要这两个指针吗?

标签: c++ std


【解决方案1】:

v 是一个指针,因此您需要在对其使用下标运算符之前取消对它的引用:

for (int i = 0; i < v->size(); i++)
    delete (*v)[i];
//         ^^^^

或者,您可以使用显式运算符语法:

delete v->operator[](i);

【讨论】:

    【解决方案2】:

    v 是您传入的指针。当您执行v[i] 时,您访问的是ith vector。真的,你只有一个向量,你想delete它的元素。为此,首先取消引用指针:

    delete (*v)[i];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 2015-08-09
      • 2013-09-24
      • 2012-08-12
      相关资源
      最近更新 更多