在<Object>基于范围的 for 循环中从 std::vector 获取指向对象的指针



我有一个对象的向量- journal

    std::vector<Object> journal;
    std::vector<Object*> filteredJournal;
    for (const auto &element : journal) {
            if (element.data[1] == user) {
                filteredJournal.push_back(&element);
            }
    }

我想将指针的向量填充到这些对象filteredJournal,并用journal的特定对象指针。我尝试在element上使用&,但是当然,这给了我一个错误,即我对push_back()函数的论点错误。正确的方法是什么?

问题在这里:

const auto &element : journal

您将常量引用绑定到每个元素。因此,当您使用它进行地址时,您将获得指向const元素的指针。而且您不能将其传递给期望指向未构成资格的对象的函数。

只需删除const预选赛:

auto &element : journal

当然,有关迭代,参考和指针无效的通常警告当然适用。确保filteredJournal的持续时间不超过其指针指向有效对象的时间跨度。

最新更新