gpt4 book ai didi

c++ - 对指针列表进行排序 C++ - 没有匹配的函数错误

转载 作者:太空狗 更新时间:2023-10-29 23:00:21 25 4
gpt4 key购买 nike

我正在尝试按其类的特定参数对指针列表进行排序,为此我工作了将近一个小时。它给我错误:

/src/ClassifyById.cpp:26:25: error: no matching function for call to
‘std::list<Worker*>::sort(<unresolved overloaded function type>)’

在搜索时我发现了这个: Problem sorting a list of pointers

但这不是我的情况,我不明白为什么我的代码不起作用。据我所知,我不能在此作业中使用仿函数。这是我的代码:

#include "ClassifyById.h"
#include "Worker.h"
#include <algorithm>

void ClassifyById::classify(list<Worker*> toClassify) {

toClassify.sort(compare); //ERROR###
}

bool ClassifyById::compare(Worker* a, Worker* b){
return (a->getId() < b->getId());
}

为什么不编译?

最佳答案

您的 compare() 函数是一个非static 成员函数,它需要三个参数:除了您要比较的实体之外,它还需要一个对象,它是由 this 指向。简单的解决方法是使成员 static 或将其完全变成非成员函数。

但是,如果您的目标是获得良好的性能,则最好使用带有 inline 函数调用运算符的比较器对象:通过函数指针的调用通常不能内联,而 内联 函数调用运算符对于内联来说是微不足道的。

关于c++ - 对指针列表进行排序 C++ - 没有匹配的函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33975262/

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