我遇到了將元素插入到地圖時的問題,我假設每次將新對象放入地圖時,前一個都會被覆蓋。每當我打印出地圖的內容時,只會打印最近添加的項目。我有兩個類,一個食譜類和一個成分類。我的食譜有一個map<Ingredient*, int>
它持有和對象及其數量。爲什麼在將對象插入地圖時,我的密鑰被覆蓋?
Recipe::Recipe(){
title = "";
ingredients;
}
void Recipe::insertIngredient(Ingredient* item, int quantity){
ingredients.insert(make_pair(item, quantity ));
}
Ingredient::Ingredient(){
name = "";
unit = "";
}
我對每個我用來初始化變量和內容打印出來類的getter和setter,但每當我打印我的食譜的地圖內容,只有我把它付諸表決的最後一個項目被打印出來。以下是我的主要功能打印出地圖。
map<Ingredient*, int> tempIngredients = tempRecipe->getIngredients();
map<Ingredient*, int>::iterator ingredientIt;
for (ingredientIt = tempIngredients.begin(); ingredientIt!= tempIngredients.end(); ingredientIt++) {
Ingredient* tempIngredient = ingredientIt->first;
int quantity = ingredientIt->second;
cout << "\n" << tempIngredient->getName() << " " << tempIngredient->getUnit() << " " << quantity << flush;
}
我的輸出目前是以下:
未漂白小麥混合麪粉C. 1
哪個是igredient的姓名,單位和量的最後一個元素的(從地圖值)I添加。
這樣做我收到錯誤傳遞'const Ingredient'作爲'std :: string Ingredient :: getName()'的'this'參數丟棄限定符 –
您需要添加一個'const'版本的get name。 'const const std :: string&getName()const {return ...}' – GWW
我加了'const string&getName()const { return name;並且給出了同樣的錯誤。我改變了我的成分從指針到物體,是否需要? –