#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的错误。

 

观察输出 

       error C2280: 尝试引用已删除的函数

 

 

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

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

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

相关文章:

  • 2021-11-06
  • 2021-12-15
  • 2021-12-07
  • 2021-07-28
  • 2022-01-19
  • 2021-06-26
  • 2022-12-23
  • 2021-09-25
猜你喜欢
  • 2021-10-05
  • 2022-01-14
  • 2022-12-23
  • 2022-12-23
  • 2022-01-08
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案