[英]How to access methods of classes stored in an unordered_map in C++
因此,我有一個名為 Account 的 class 並將其存儲在 unordered_map 中,但是當我嘗試訪問 map 中的 class 的功能時,它無法編譯。 class 存儲在 header 文件“Bank.h”中
class Account {
double balance;
std::string username;
public:
Account(double balance, std::string username);
double getBal() {
return this->balance;
}
std::string getName() {
return this->username;
}
void updateBal(double amount) {
this->balance += amount;
}
};
這些函數存儲在帶有#include "Bank.h" 的單獨的 cpp 文件中
std::unordered_map<std::string, Account> accountList;
Account test(100, "Tester");
std::cout << test.getBal();
accountList.insert(std::make_pair("Test", test));
accountList["Test"].getName();
accountList["Test"].getName();
無序 map(以及std::map
也是)上的[]
運算符具有必須滿足的強制性要求:如果映射的鍵不存在,則創建它並默認構造相應的值。
不幸的是,您的Account
class 沒有默認構造函數,因此編譯失敗。
確實,就在這行代碼之前,您正在將"Test"
的值插入 map,因此它會存在。 不幸的是,這無關緊要。 必須滿足operator[]
的所有要求,包括地圖的值要求具有默認構造函數。
您有兩個選項來解決您的編譯錯誤:
將默認構造函數添加到您的Account
class,或
您不能使用[]
,而是使用at()
; 或使用find()
(並將其結果與end
() 進行比較)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.