这种方法:
void LRU::displayQueue() const
{
for(iter = m_buffer.begin(); iter != m_buffer.end(); ++iter)
std::cout << (*iter) << " ";
std:: cout << std::endl;
}
导致以下错误:
lru.cpp:58: error: passing 'const std::_Deque_iterator<int, const int&, const int*>' as 'this' argument of 'std::_Deque_iterator<int, const int&, const int*>& std::_Deque_iterator<int, const int&, const int*>::operator=(const std::_Deque_iterator<int, const int&, const int*>&)' discards qualifiers
m_buffer
并iter
在我的头文件中声明,其中缓冲区被声明为 a deque
of typeint
并且iter
是一个常量迭代器:
// ...
std::deque<int> m_buffer;
std::deque<int>::const_iterator iter;
// ...
删除方法const
中的displayQueue
将消除编译器错误,但由于此函数不应修改 中的任何数据deque
,我想通过保持我的代码“常量正确”来明确这一点。当我的迭代器是 a 时,为什么这会导致错误 const_iterator
?