我有一個無序的地圖std::unordered_map<void (MyClass::*)(), double>,用于存盤自呼叫函式以來經過的時間。我收到一條錯誤訊息
error: use of deleted function ‘std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map() [with _Key = void (MyClass::*)(); _Tp = double; _Hash = std::hash<void (MyClass::*)()>; _Pred = std::equal_to<void (MyClass::*)()>; _Alloc = std::allocator<std::pair<void (MyClass::* const)(), double> >]’
這是什么原因造成的,我該如何解決?有沒有更好的方法來做我想做的事情?
uj5u.com熱心網友回復:
std::unordered_map使用一些涉及std::hash函式的計算來存盤其資料。如 檔案中所述std::hash,在“基本型別的標準特化”和“庫型別的標準特化”小節下,只有有限的型別std::hash可以執行,并且void (MyClass::*)()不是其中之一,因為它是用戶定義的。
一種可能的解決方案是將std::bit_cast指標指向適當的整數型別并將其存盤int為鍵。另一種解決方案是std::string用作鍵,當呼叫函式時,將__func__用作函式內部的鍵。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/438341.html
上一篇:轉換為基類時呼叫的模板超類建構式
