首页 > 解决方案 > 在取消引用向量时遇到问题

问题描述

我正在创建一个网格游戏,其中网格中的每个框都是一个区域,并代表一些人以及他们的特定 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是一个向量

谁能帮帮我吗。

标签: c++c++11vectordata-structures

解决方案


在您的代码中考虑这一行:if (alive[i]->person_id == id). 它使用->而不是.表明它alive不是某个结构/类的向量,而是指向某个结构/类的指针(或可能像指针一样的其他对象)的向量。因此,要打印实际对象,请执行std::cout<<*alive[i]<<std::endl;(注意添加的*)。


推荐阅读