find_if与vector <unique_ptr>无法正常工作

时间:2017-03-30 16:07:42

标签: c++ visual-studio c++11

我意识到之前已经问过类似的问题,但我没有找到问题的答案,所以我要在这里发布。

iteratorHelperaccountNr为参数,搜索unique_ptrs的向量并返回bool。

问题出在第二种方法中。

getAccInfo(size_t pAccNr)中的if语句给了我一些问题。 我的IDE抱怨&#34; iteratorHelper&#34;说那个

  

该对象具有与成员函数&#34; Client :: iteratorHelper&#34;不兼容的类型限定符。对象类型是const Client

我不完全确定我在这里失踪了所以如果有人能指出我正确的方向吗?

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;    
}

1 个答案:

答案 0 :(得分:0)

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