【问题标题】:Having problem in dereferencing the vector在取消引用向量时遇到问题
【发布时间】:2018-10-06 18:06:41
【问题描述】:

我正在创建一个网格游戏,其中网格中的每个框都是一个区域,并代表一些人以及他们的特定 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&lt;&lt;alive[i]&lt;&lt;std::endl; 总是打印号码的地址。我尝试了很多东西,但我无法弄清楚。

编辑:这里alive是一个向量

谁能帮帮我。

【问题讨论】:

  • 可能值得告诉我们alive 是如何定义的?特别是因为这就是您的问题所在。
  • 它是一个向量,但是它是如何定义的呢?
  • 你知道你可以把不同的东西放在一个向量中吗?你能告诉我们你在这个向量中放了什么东西吗?

标签: c++ c++11 vector data-structures


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-12-20
    • 2015-10-22
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 2021-11-11
    • 2021-07-16
    相关资源
    最近更新 更多