错误是"没有重载功能的实例...匹配参数列表" 我明白我给擦除功能提出了错误的论据,但我不知道 如何解决这个问题
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;
}
答案 0 :(得分:1)
首先,我认为你的意思是将文件夹指向的对象与向量中的对象进行比较。
执行任务的一般方法是使用标准算法std::find_if
代码将采用以下方式
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 );
}
答案 1 :(得分:0)
编辑:
您可以简单地使用:
std::vector<Folder*>::iterator itr= listOfFolders.begin();
while( itr != listOfFolders.end())
{
if(*itr==folder){
listOfFolders.erase( itr );
break;
}
++itr;
}