Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用成员函数对类对象数组进行排序_C++_Sorting - Fatal编程技术网

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

C++ 使用成员函数对类对象数组进行排序,c++,sorting,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

我不确定下面的代码有什么问题,我试图使用成员函数比较器对类对象数组进行排序

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);
类查询{
公众:
int启动;
内端;
整数指数;
布尔运算符开始查询[i]。开始>>查询[i]。结束;
查询[i]。索引=i;
}
排序(查询,查询+q);
我得到以下错误:

错误:调用“sort(main()::Query”时没有匹配的函数 [((无符号整数)((整数)q)+-0x00000000000000001))+1], main()::Query*)'

更新:
我找到了错误的原因。我已将该类包含在我的main中。当我将类定义移到main之外时,问题得到了解决。我对C++/OOP的理解还不够透彻,无法理解为什么会发生这种情况。如果有人能解释或指导我找到有用的资源,我将不胜感激。

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

您是否包含了
#include
?是的,谢谢。问题不同。上面的所有代码都在main()中。但是,当我删除main之外的类定义时,问题得到了解决。我不明白为什么。@elexhobby您应该修改您的问题,并将其更改为包含此信息。可能重复的问题在此处找到答案:,