c++ - 在取消引用向量时遇到问题
问题描述
我正在创建一个网格游戏,其中网格中的每个框都是一个区域,并代表一些人以及他们的特定 ID。
现在我在这里有一个函数,它可以在特定框中找到确切的人在网格中的位置。
这是我的功能。
bool where(int id, int &row, int &col)const
{
person* per;
for(int i=0;i<alive.size();i++)
{
std::cout<<alive[i]<<std::endl; //This is just for testing the person number
if (alive[i]->person_id == id)
{
p = alive[i];
break;
}
}
}
我的问题:测试代码std::cout<<alive[i]<<std::endl;
总是打印数字的地址。我尝试了很多东西,但我无法弄清楚。
编辑:这alive
是一个向量
谁能帮帮我吗。
解决方案
在您的代码中考虑这一行:if (alive[i]->person_id == id)
. 它使用->
而不是.
表明它alive
不是某个结构/类的向量,而是指向某个结构/类的指针(或可能像指针一样的其他对象)的向量。因此,要打印实际对象,请执行std::cout<<*alive[i]<<std::endl;
(注意添加的*
)。
推荐阅读
- vue.js - 在 Nuxt 中,如何从另一个模块中改变一个模块中的 Vuex 状态?
- flutter - 如何通过 podspec 在颤振插件上链接 .o 目标文件?
- extjs - 停止传播来自子组件的自定义事件
- angular - 在 Angular 中打开和关闭某些 div 的最佳方法是什么?
- url-rewriting - WordPress 分类 URL 重写同时保留过滤的帖子?
- python - scipy.integrate.fixed_quad 总是返回“无”值?
- java - 如何在不使用依赖注入 Dagger 的情况下使用 Retrofit ApiService 解决 OkHttp authenticationator() 的循环依赖?
- c# - C# Winform 注册表更改似乎有效,但实际上并没有
- bash - 如何永久更改 Visual Studio Code 终端默认值
- excel - VLOOKUP 返回 FALSE 的函数