zoukankan      html  css  js  c++  java
  • error C2280: 尝试引用已删除的函数

    #include<unordered_map>


    struct SceneData { unordered_map<CString, CString> mConversationWord; //unordered_map<wchar_t, INODE> mEntry; //unordered_map<CString, INODE> mConversationAni; //unordered_map<CString, INODE> mCheckAni; //unordered_map<CString, INODE> mDoor; };

      刚开始用的map,后来想直接用索引找值,于是换成hash_map,没想到时至今日,它已经被微软件废弃了,按着VS2019的提示将头换成unordered_map,并使用该类型。

      不料出现c2280的错误。

    观察输出 

           

    对CString类,使用 std::hash<_Kty>::hash(const std::hash<_Kty> &) 生成键时,引用的是 _Kty=ATL::CString,而此构造被认为是删除的,并且编译器已经使用 std::hash<_Kty>::hash 生成了键,引用的是 _Kty=ATL::CString。

    看来 问题出在 键上,而非 值上。将键换成简单类型后错误提示消失。

    在网上看到有使用Union,报相同错误的文章。解决方案是将CString换成简单类型。还有将析构函数权限没有放在公有权限中而报该错误的。

  • 相关阅读:
    嘉佣坊
    HTTPS
    OWIN 为WebAPI
    C#并行编程
    ASP.NET 运行
    DocFX
    oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解
    Facebook新框架React Native,一套搞定App开发[转]
    MVC 中使用 SignalR 实现推送功能
    生产都消费者模式的一个demo,消费者设置缓存
  • 原文地址:https://www.cnblogs.com/ice-arrow/p/11724546.html
Copyright © 2011-2022 走看看