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換成簡單類型。還有將析構函數權限沒有放在公有權限中而報該錯誤的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM