我有类排序指针和继承自它的类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 ..?
答案 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);