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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<unordered_map><br><br><br>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换成简单类型。还有将析构函数权限没有放在公有权限中而报该错误的。

posted @   IceArrow  阅读(10707)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示