我如何用set operator->返回非const对象

时间:2019-04-15 15:45:58

标签: c++

我得到了错误:

  

没有匹配功能可调用‘mem :: GPAchunk :: get_memory(size_t&)const

和注释:

  

通过“ const mem :: GPAchunk *”作为“此”参数会丢弃限定符

我认为问题在于集合库的功能

operator->() const _GLIBCXX_NOEXCEPT
  { return static_cast<_Link_type>(_M_node)->_M_valptr(); }

这是我调用的功能

void mem::GPAchunk::get_memory(const size_t &amount){
    m_chunkSize -= amount;
    m_bPtrData = m_bPtrData + amount;
}

我称之为

i->get_memory(neededSize);

i在这里定义

for (auto i = m_freeChunks.begin(); i != m_freeChunks.end(); i++)

1 个答案:

答案 0 :(得分:0)

您似乎拥有std::set<GPAchunk>

std::set元素是不可变的/ const。只要不修改用作集合键的元素成员,您仍然可以抛弃constness并修改元素。