我有一个对象矢量 - 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()
函数提供了错误的参数。什么是正确的方法呢?
答案 0 :(得分:4)
问题在于:
const auto &element : journal
将const引用绑定到每个元素。因此,当您使用它来获取地址时,您将获得指向const元素的指针。并且您不能将它传递给期望指向非const限定对象的指针的函数。
只需删除const限定符:
auto &element : journal
关于迭代器,引用和指针失效的常见警告当然适用。确保filteredJournal
的持续时间不超过其指针保证指向有效对象的时间跨度。