C++ 没有重载函数的实例;。抹去;匹配参数列表

C++ 没有重载函数的实例;。抹去;匹配参数列表,c++,vector,C++,Vector,错误为“没有重载函数的实例…与参数列表匹配” 我知道我给了擦除函数错误的参数,但我不知道 如何解决这个问题 void Folder::DeleteFolder(Folder* folder) { for(int i = 0; i> (this->Folder::GetFolders().size());i++) { if(this->Folder::GetFolders()[i]==folder) {

错误为“没有重载函数的实例…与参数列表匹配” 我知道我给了擦除函数错误的参数,但我不知道 如何解决这个问题

    void Folder::DeleteFolder(Folder* folder)
    {
     for(int i = 0; i> (this->Folder::GetFolders().size());i++)
     {
          if(this->Folder::GetFolders()[i]==folder)
          {
             //The problem occures on the next line
             this->Folder::GetFolders().erase(this->Folder::GetFolders()[i]);
             break;
          }
     } 
    }

   //here is the method GetFolders
   std::vector<Folder*>& Folder::GetFolders()
   {
     return this->listOfFolders;
   }
void Folder::DeleteFolder(文件夹*文件夹)
{
对于(inti=0;i>(此->文件夹::GetFolders().size());i++)
{
如果(此->文件夹::GetFolders()[i]==文件夹)
{
//问题发生在下一行
此->文件夹::GetFolders().erase(此->文件夹::GetFolders()[i]);
打破
}
} 
}
//下面是GetFolders的方法
std::vector&Folder::GetFolders()
{
返回此->列表文件夹;
}
编辑:

您可以简单地使用:

     std::vector<Folder*>::iterator itr= listOfFolders.begin();
     while( itr != listOfFolders.end())
     {
       if(*itr==folder){
          listOfFolders.erase( itr );
          break;
       }
       ++itr;
     }
std::vector::iterator itr=listOfFolders.begin();
while(itr!=listOfFolders.end())
{
如果(*itr==文件夹){
文件夹清除列表(itr);
打破
}
++itr;
}

首先,我认为您的意思是将文件夹指向的对象与向量中的对象进行比较

执行任务的一般方法是使用标准算法
std::find_

void Folder::DeleteFolder(Folder* folder)
{
    std::vector<Folder*> &v =  this->Folder::GetFolders();

    auto it = std::find_if( v.begin(), v.end(),
                            [&]( Folder *f ) { return ( *f == *folder ); } );

    if ( it != v.end() ) v.erase( it );
} 
void Folder::DeleteFolder(文件夹*文件夹)
{
std::vector&v=this->Folder::GetFolders();
auto it=std::find_if(v.begin(),v.end(),
[&](文件夹*f){return(*f==*文件夹);});
如果(it!=v.end())v.erase(it);
} 

提示:
erase()
需要一个
std::vector::iterator
!看一看,我试过juanchopanza的“擦除-删除”成语,效果很好。感谢大家的快速回答safaik类std::vector没有找到成员函数。@VladfromMoscow,你说得对。这是长期使用Qt容器的结果。我已经编辑了我的代码。谢谢