实例化模板化类的麻烦

时间:2015-07-25 14:38:27

标签: c++ const

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

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

  int main(){
  mutable_heap<int> mutaheap;
  return 0;
  }

mutable_heap的默认构造函数是:     mutable_heap(){}

我得到的错误是“参见类模板实例化&#39; mutable_heap&#39;被编译&#39;

1 个答案:

答案 0 :(得分:1)

根据the spec,密钥总是作为const引用接收:

print '\n\nPhone List\n\n'

for i in phonelist: 
    name =  (str(i['return']['phone']['name']))
    pattern =  (str(i['return']['phone']['lines']['line'][0]['dirn']['pattern']))   
    ownerIdcheck =  (str(i['return']['phone']['ownerUserName']))
    if len(ownerIdcheck) > 0:
        ownerId =  (str(i['return']['phone']['ownerUserName']['value']))
    else: 
        ownerId = ''
    print name, ' | ', pattern , ' | ',ownerId

这里不足为奇。但是因为你的地图是可变的(即非const限定),你会收到iterator find ( const key_type& k ); const_iterator find ( const key_type& k ) const; ,这是一个可修改的包装器,它保存在容器中的特定值。

所以,基本上:

iterator

我假设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; } } 是全局函数或非静态成员函数。在第一种情况下应该没有问题,第二种情况 - 我没有看到update限定符,所以也不应该有任何问题。

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