PhonebookEntry pb1("olaNormann");
pb1.add("Home","11234567");
pb1.add("Work","11065432");
cout << pb1.getNumbers()["Home"] << endl;
cout << pb1.getNumbers()["Work"] << endl;
map<string,string>::iterator it;
for(it = pb1.getNumbers().begin(); it != pb1.getNumbers().end(); ++it){
cout << (*it).first << ": " << (*it).second << endl;
}
最初の 2 つの cout を使用して、2 つのペアが適切に追加されるようにしました。このコードは、Home と Work のラベルが付いた最初の 2 つの数値を出力しますが、for ループで両方の数値を出力できません。for ループは "Home: 11234567" のみを出力します。誰でも理由がわかりますか?以下は、関連するメソッドが実装された私のヘッダーファイルです。
class PhonebookEntry{
private:
std::string name;
std::map<std::string, std::string> numbers;
public:
PhonebookEntry(std::string name) : name(name){}
std::map<std::string, std::string> getNumbers() const {return numbers;}
void add(const std::string label,const std::string number){numbers[label] = number;}
};