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