C++,矢量find_if<unique_ptr>无法正常工作

C++, find_if with vector<unique_ptr> is not working properly

本文关键字:常工作 工作 unique find 矢量 if lt ptr C++ gt      更新时间:2023-10-16

我意识到以前有人问过类似的问题,但我没有找到问题的答案,所以我只是在这里发布它。

iteratorHelperaccountNr作为参数,搜索unique_ptrs向量并返回布尔值。

问题出在第二种方法上。

getAccInfo(size_t pAccNr)中的 if 语句给我带来了问题。我的IDE抱怨" iteratorHelper "说

该对象具有与成员函数"Client::iteratorHelper"不兼容的类型限定符。对象类型为常量客户端

我不完全确定我在这里错过了什么,所以如果有人能指出我正确的方向?

auto Client::iteratorHelper(size_t accountNr ) {
  return find_if(
    accounts.begin(), accounts.end(),
    [&accountNr ](const unique_ptr<Account>& account) {
      return account->getAccountNr() == accountNr;
    }
  );
unique_ptr<Account> const & Client::getAccInfo(size_t pAccNr) const {
  if (iteratorHelper(pAccNr) != accounts.end()) {
    auto const& index = distance(accounts.begin(), iteratorHelper(pAccNr));
    return accounts[index];
  }
  return nullptr;    
}

iteratorHelper不是const。 您正在从const函数getAccInfo调用它。 这是非法的。