我有一個示例Map類,我試圖覆蓋下標運算符。允許該類的用戶讀取和寫入地圖。 正在讀取Map [「a」],並且Map [「a」] =「something」是類的寫入。然而,我無法弄清楚如何使用賦值操作符的一面,並允許一個傳入的值來替換它。現在,如果我嘗試賦一個新值,它只是寫着「分段錯誤」重載下標運算符
這是我到目前爲止有:
VALUE_TYPE& Map::operator[](KEY_TYPE a){
cout << "hmm" << endl;
}
Map& Map::operator=(const Map &rhs){
//cout << "operator = " << endl;
}
現在我沒有任何代碼..只是想看到他們會成功接到電話。
似乎我無法搞清楚的是,如果我做的
Map["a"] = "hey";
這樣的東西,我會得到一個分段錯誤。我假設賦值運算符=會在我想爲特定鍵分配新值時被調用。難道我做錯了什麼?
順便說一句,VALUE_TYPE和KEY_TYPE只是定義爲字符串,每個鍵都有一個與其相關的值。
解決此類問題的正確工具是您的調試器。在*堆棧溢出問題之前,您應該逐行執行您的代碼。如需更多幫助,請閱讀[如何調試小程序(由Eric Lippert撰寫)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,您應該\編輯您的問題,以包含一個[最小,完整和可驗證](http://stackoverflow.com/help/mcve)示例,該示例再現了您的問題,以及您在調試器。 –
初看。運營商應該採用'type'而不是'Map'的權利?因爲'Map [a]'會返回地圖中的一個元素。不是地圖。除非它是地圖的地圖。 –
運算符=分配整個地圖,而不是單個元素。 –