2015-11-30 55 views
-3

我想存儲映射中的所有變量,以便能夠輕鬆創建軟件變量的打印,但我仍然不能使它與地圖工作。有人可以幫忙嗎?C++ map poiting

int ovalor = 10; 
map<string, int> *mapping = new map<string, int>(); 
(*mapping)["ovalor"] = &ovalor; 

error: a value of type "int *" cannot be assigned to an entity of type "int"

非常感謝

+4

您的地圖需要'int'作爲值,但您試圖將'int'的地址分配給'int *' – MagunRa

+4

'&int-value'作爲旁白,請勿動態分配(使用'new '),除非沒有別的選擇。 – emlai

+2

另外,在這個例子中,你正在接受一個局部變量的地址。該地址在變量所在的範圍之外無效。 – crashmstr

回答

3

的消息說,所有的,它需要真正:

error: a value of type "int *" cannot be assigned to an entity of type "int" 

因爲這裏:

(*mapping)["ovalor"] = &ovalor; 

你正在服用的ovalor地址,它給你一個n int *,然後嘗試將其存儲在映射爲string s到int s的地圖中。指向一個整數的指針與長粉筆的整數不同。此外,一個指向局部變量的指針(這看起來像)後來只是要求麻煩。

順便說一句,爲什麼指針的東西?這是簡單得多,只是做

map<string, int> mapping; 

並節省您對懸掛參考和不公正的記憶的擔憂。

+0

非常感謝湯姆 –