c++地图值不改变运行时,我做错了什么
C++ map values not changing on run time, what am I doing wrong?
我在游戏的全局类中有一个名为realMap的地图。它用于在地图中存储变量,只要realMap在范围内,游戏中的所有对象都可以访问这些变量。基本上就像Gamemaker中的global.
。因此,map中的所有内容都是在运行时存储的。
这是映射初始化代码std::map<const char*, Real> realMap;
(Real
在另一个声明给double
的文件中)
在我的播放器对象中,当它开始时,播放器开始globalObject.realMap["playerDead"] = false;
检查它是否等于0
但是当玩家死亡时,它应该将地图键设置为true
,但它没有。我做了一个显示消息来检查它的值,它仍然是0。下面是代码:
ObjGlobal->realMap["playerDead"] = true;
Real tempVal = ObjGlobal->realMap.at("playerDead");
agk::Message(agk::Str(int(tempVal)));
如我所说,agk::Message显示0。
我做错了什么?我对映射还是个新手,对c++也是个新手,所以很抱歉,如果这是一个愚蠢的错误。
Thanks in advance
您使用指向字符串文字的指针作为映射的键,但是您的代码中有两个不同的"playerDead"
字符串。除非你的链接器将两个字符串优化为相同的指针(许多链接器都会这样做,但不必这样做),否则键实际上最终会不同。
如果您将映射定义更改为std::map<std::string, Real>
,它应该按预期工作,因为键实际上将基于字符串的内容而不是其在内存中的地址。
相关文章:
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 我的C++线程做错了什么?
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- 没有输出的合并排序我做错了什么?
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- 在C++中使用 AKS 素数测试计算双胞胎素数 我做错了什么?
- 我一直试图弄清楚我在这个链表程序中做错了什么
- 我正在尝试学习如何在 c++ 中传递指针,但出现错误:没有用于调用"test"的匹配函数。我做错了什么?
- FFMPEG,C++,内存泄漏,我做错了什么?
- 我做错了什么?反向字符串 C++
- 我在这个课上做错了什么?
- 创建整数的 2D 数组,该数组将使用两个函数用随机数填充矩阵.我做错了什么?
- 在不使用内置库函数的情况下添加字符串,我做错了什么?
- 我做错了什么?GetDiskFreeSpaceExA的功能根本不起作用
- 我在查找和字符串上做错了什么?
- 我正在尝试用 c++ 制作一个日志记录框架,但信息没有传递给记录器的子组件,我做错了什么?
- 我在尝试将多个值push_back向量时出错。我做错了什么?
- 插入排序:我做错了什么?