我可以知道如何将stl::list::sort函数与外部函数一起用于抽象数据类型吗?

构造函数的示例代码如下所示:

ADType::ADType(string name, int object){
//constructor code
}


对于方法:

using <list>
using namespace std;

bool compare_Object(ADType& first, ADType& second){
//search algorithm
return true;
}

int main(){
ADType test1 = ADType("Test 1", 123);
ADType test2 = ADType("Test 3", 142);
ADType test3 = ADType("Test 2", 200);
list<ADType> testlist;
testlist.push_back(test1);
testlist.push_back(test2);
testlist.push_back(test3);
testlist.sort(compare_Object);
//code to print out objects in list
}


上面的代码行给出了函数调用缺少参数列表的错误C3867和函数不接受参数的C2660。我刚刚发布的代码有问题吗?

最佳答案

一个更简单的解决方案是将compare方法实现为静态方法,因此不需要对象实例即可使用该方法。

static bool compare_Object(BaseObj& first, BaseObj& second){
    return first.getLength() > second.getLength();
    // return true give me error since it can't really sort.
}


BaseObj类:

    BaseObj::BaseObj(int a) {
          length = a;
    }

    int BaseObj::getLength() {
          return length;
    }

09-13 11:09