试图使用operator()错误comp不能用于c ++

时间:2015-12-08 13:28:34

标签: c++ eclipse sorting functor

我有类排序指针和继承自它的类sortID。 class sortID有operator(),我试图将它发送到这个函数试图对我的列表进行排序。它给了我错误: " sort不能用作函数。"

#include "Sort.h"
#include "SortID.h"
class Movie{


list<int*> somelist;
public:
void Movie::sortList()
{
  Sort* sorter = new sortID();
  this->someList.sort(sorter);
}
}

这是class sortID:

#include "sort.h"
class SortID : public Sort {


bool sortID::operator()(const int* a, const int* b){
return a.getId() < b.getId();
}

class Sort{
public:
virtual bool operator()(const int* a, const int* b)=0;

HELP ..?

2 个答案:

答案 0 :(得分:1)

list::sort不需要指针 只需传递一个对象:

void Movie::sortList()
{
  someList.sort(SortID());
}

(您发布的代码中还有其他错误,但我想这些错误是由您在复制和粘贴时重新输入造成的。)

答案 1 :(得分:0)

您的somelist变量属于list<int*>类型,而非类型list<SortID*>

您的编译器不知道您有一个存储在那里的SortID类的指针,因此无法识别()运算符。

您可以更改列表类型:

list<SortID*> somelist;

或者在被叫时施放它 - 虽然不安全:

((SortID*) this->someList).sort(sorter);