gpt4 book ai didi

c++ - 我可以访问一个唯一的指针作为 const 引用吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:28:54 29 4
gpt4 key购买 nike

我有一组 unique_ptr 对象到 ms_order 对象:

std::vector<std::unique_ptr<ms_order>> orders;

我想创建一个私有(private)辅助函数来获取 ms_order 对象:

const std::unique_ptr<ms_order>& ms_order_collection::get_order(const std::string &id) {
std::vector<std::unique_ptr<ms_order>>::iterator it =
std::find(orders.begin(), orders.end(),
[&id](const std::unique_ptr<ms_order>& op)
{ return op->getId() == id; });
return *it;
}

我收到以下错误:

error: no match for 'operator==' (operand types are 'std::unique_ptr<ms_order>' and 'const ms_order_collection::get_order(const string&)::<lambda(const std::unique_ptr<ms_order>&)>')
{ return *__it == _M_value; }
~~~~~~^~~~~~~~~~~

这个错误对我来说毫无意义。我正在尝试做的事情有可能吗?如果是这样我做错了什么?

最佳答案

你应该使用 std::find_if而不是 std::find .

std::find 将给定迭代器范围内的每个元素与 value 进行比较。在您自己的情况下,您提供的值是一个匿名类型的 lambda 对象,与 orders< 中的元素类型没有等价关系(或合适的 operator == )/

std::find_if 在每个元素上调用您的仿函数,如果 true 则返回迭代器位置,否则返回结束迭代器。

关于c++ - 我可以访问一个唯一的指针作为 const 引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43375165/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com