提问人:Jonghyun 提问时间:6/20/2022 更新时间:6/20/2022 访问量:236
为什么错误:C++ 列表中的调用没有匹配的函数
why error : no matching function for call in c++ list
问:
我想删除“m_list”中的元素
但是此代码出现错误“没有匹配函数用于调用 list::erase”
例如)
std::list<std::list<Myclass *>::iterator> **m_list;
std::list<Myclass *>::iterator it;
std::list<Myclass *>::iterator dlt;
for(it = m_list[a]->begin(); it != m_list[a]->end(); it++ ) {
if ((*it)->condition = true) {
dlt = m_list[a]->erase(it); // error detected here
}
}
我不知道为什么list::erase不起作用
有人回答我如何解决这个问题,请...
答: 暂无答案
评论
it = m_list[a]->begin()
it
m_list[a]
m_list[a]->begin()
it++
if ((*it)->condition) it = m_list[a]->erase(it); else ++it;
std::list<std::list<Myclass *>::iterator> **m_list;
很奇怪,它是指针到指针。它从未被分配过。所以它不能像它显示的那样工作begin()
std::list<std::list<Myclass *>::iterator>::iterator
(*it)->condition = true
应该是,甚至更好。(*it)->condition == true
(*it)->condition