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

can I get access to a unique pointer as const reference?

我收集了 unique_ptr 个对象到 ms_order 个对象:

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

我想创建一个私有辅助函数来获取 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 rather than std::find.

std::find 将给定迭代器范围内的每个元素与 value 进行比较。在您自己的情况下,您提供的值是一个匿名类型的 lambda 对象,与 orders

中的元素类型没有等价关系(或合适的 operator ==

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