我有一个对象 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的指针的 vector 。我尝试在&上使用element,但是当然这给了我一个错误,即我给push_back()函数提供了错误的参数。什么是正确的方法?

最佳答案

问题在这里:

const auto &element : journal

您将const引用绑定(bind)到每个元素。因此,当您使用它获取地址时,将获得指向const元素的指针。而且,您不能将其传递给期望指向未const限定对象的指针的函数。

只需删除const限定符即可:
auto &element : journal

当然,关于迭代器,引用和指针无效的常见警告也适用。确保filteredJournal的持续时间不超过保证其指针指向有效对象的时间范围。

关于c++ - 在基于范围的for循环中从std::vector <Object>获取指向Object的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48735056/

10-10 10:54