我得到了矢量这种方式初始化vector<unique_ptr<Worker>> Workers
。 Worker是一个具有私有字段名称的基类,它有两个派生类:Builder和Driver。排序的unique_ptr的向量
我添加到生成器的Workers
矢量对象和驱动程序,然后我想用#include <algorithm>
像这样按名称进行排序向量:
sort(Workers.begin(), Workers.end(), cmp_by_name);
bool cmp_by_name(const Worker &a, const Worker &b)
{
return a.getName() < b.getName();
}
但VS说
错误1错误C2664: 'bool(const Worker &,const Worker &)':无法将参数2从'std :: unique_ptr'转换为'const Worker &'c:\ program files(x86)\ microsoft visual studio 12.0 \ vc \ include \ algorithm 3071 1 A pp
你能帮我一下吗?
编辑:
感谢@NathanOliver,@ Rabbid76这个问题Sorting a vector of custom objects我编辑我cmp_by_name这种形式:
struct cmp_by_name
{
inline bool operator()(const unique_ptr<Worker>& a, const unique_ptr<Worker>& b)
{
return a->getName() < b->getName();
}
};
我呼吁排序功能是这样的:
sort(Workers.begin(), Workers.end(), cmp_by_name());
谓词的签名是错误的。 – Lingxi