使用成员函数对类对象的数组进行排序

时间:2013-09-20 23:17:20

标签: c++ sorting

我不确定以下代码有什么问题,我正在尝试使用成员函数比较器对类对象数组进行排序。

class Query {
    public:
        int start;
        int end;
        int index;
        bool operator<(const Query &b) {
            return this->start < b.start;
        }
};

Query query[q];

for (int i=0;i<q;++i) {
    cin>>query[i].start>>query[i].end;
    query[i].index = i;
}
sort(query,query+q);

我收到以下错误:

  

错误:没有匹配函数来调用'sort(main():: Query   [(((unsigned int)(((int)q)+ -0x00000000000000001))+ 1)],   主()::查询*)”

更新: 我找出了错误的原因。我把课程包括在我的主要课程中。当我将类定义移到main之外时,问题得以解决。我对C ++ / OOP没有足够的理解来理解为什么会这样。如果有人可以向我解释或指导我提供有用的资源,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

本地类型(即在函数内定义的类型)不能用作C ++ 03中的模板参数(std::sort()的一个模板参数是应该排序的对象的类型)。我不知道为什么C ++ 03有这个限制。 C ++ 11不再具有此限制。