我有一个对象 vector - journal
:
std::vector<Object> journal;
std::vector<Object*> filteredJournal;
for (const auto &element : journal) {
if (element.data[1] == user) {
filteredJournal.push_back(&element);
}
}
我想用指向journal
中特定对象的指针填充指向这些对象的指针 vector filteredJournal
。我尝试在 element
上使用 &
,但它当然给了我一个错误,我为 push_back()
函数提供了错误的参数.正确的做法是什么?
最佳答案
问题出在这里:
const auto &element : journal
您将 const 引用绑定(bind)到每个元素。所以当你用它来获取地址时,你会得到一个指向 const 元素的指针。并且您不能将它传递给需要指向非 const 限定对象的指针的函数。
只需删除 const 限定符:
auto &element : journal
关于迭代器、引用和指针失效的常见警告当然适用。确保 filteredJournal
的持续时间不超过保证其指针指向有效对象的时间跨度。
关于c++ - 在基于范围的 for 循环中从 std::vector<Object> 获取指向对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48735056/