1
我不确定下面的代码有什么问题,我尝试使用成员函数比较器对类对象的数组进行排序。使用成员函数对类对象的数组进行排序
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);
我得到以下错误:
error: no matching function for call to ‘sort(main()::Query [(((unsigned int)(((int)q) + -0x00000000000000001)) + 1)], main()::Query*)’
更新: 我想通了错误的原因。我已将课程包括在我的主要内容中。当我在main之外移动类定义时问题解决了。我没有足够的理解C++/OOP来理解为什么发生这种情况。如果有人能够解释或指导我获得有用资源,我将不胜感激。
你有没有'#include'? –
zch
是的,谢谢。这个问题是不同的。以上所有代码均位于main()内。但是当我在main之外移除类定义时,问题就解决了。我不明白为什么。 – elexhobby
@elexhobby您应该[编辑]您的问题,并将其更改为包含此信息。 – Dukeling