C ++地图poiting

时间:2015-11-30 14:29:56

标签: c++ pointers dictionary

我试图将所有变量存储在地图中,以便能够轻松创建软件变量的打印,但我仍然无法使其适用于地图。有人可以帮忙吗?

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

错误:类型&#34; int *&#34;的值不能分配给&#34; int&#34;

类型的实体

非常感谢

1 个答案:

答案 0 :(得分:3)

消息说它真的需要:

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

因为这里:

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

您正在使用ovalor的地址,该地址会为您提供int *,然后尝试将其存储在将string映射到int的地图中。指向整数的指针与长粉笔的整数不同。此外,指向局部变量的指针(这看起来像)稍后就会遇到麻烦。

顺便说一句,为什么指针的东西呢?做起来要简单得多

map<string, int> mapping;

并且可以通过悬空参考和不同意的记忆来避免担忧。