我有一个对象的向量- 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
的持续时间不超过其指针指向有效对象的时间跨度。