C++ 实例化模板化类时遇到问题

C++ 实例化模板化类时遇到问题,c++,constants,C++,Constants,确定更新问题,因为错误消息已更改 我的驱动程序文件具有测试代码的主要功能,设置如下: int main(){ mutable_heap<int> mutaheap; return 0; } 我的可变堆的默认构造函数是: 可变_堆{} 我得到的错误是“请参阅对类模板实例化的引用”“正在编译的可变堆”根据,密钥始终作为常量引用接收: iterator find ( const key_type& k ); const_iterator find ( const

确定更新问题,因为错误消息已更改

我的驱动程序文件具有测试代码的主要功能,设置如下:

  int main(){
  mutable_heap<int> mutaheap;
  return 0;
  }
我的可变堆的默认构造函数是: 可变_堆{}

我得到的错误是“请参阅对类模板实例化的引用”“正在编译的可变堆”

根据,密钥始终作为常量引用接收:

iterator find ( const key_type& k );
const_iterator find ( const key_type& k ) const;
这并不奇怪。但只要映射是可变的,即非常量限定的,就会收到迭代器,它是一个可修改的包装器,保存存储在容器中的特定值

因此,基本上:

void update(const T& old_val, const T& new_val)
{
    auto it = map.find(old_val);
    if(it != map.end)
    {
        //unordered_map stores std::pair<hash, value>
        it->second = new_val;
    }
}
我假设更新是全局函数或非静态成员函数。在第一种情况下应该没有问题,在第二种情况下-我没有看到常量限定符,所以也应该没有任何问题


这是您尝试过的解决方案吗?

const T&new这不可能编译。不要使用保留关键字mate:您到底遇到了什么问题?将其从保留关键字更改为保留关键字,这不是我在程序中对其命名不同的问题。我的问题是学习如何在我的无序地图中找到一种将旧值更改为新值的方法;要修改地图中的内容?我们只是猜测你需要什么,因为你还没有展示你已经尝试了什么。是的,这就是我正在尝试的,我在帖子中添加了错误消息。谢谢大家的意见。@JohnD我明白了。这还不够,问题在别处。我很高兴看到你的include指令和可变堆的定义。我相信我在可变堆的定义上遇到了麻烦。我将把这个定义添加到我的帖子中。