【发布时间】:2013-09-20 23:17:20
【问题描述】:
我不确定以下代码有什么问题,我正在尝试使用成员函数比较器对类对象数组进行排序。
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 [(((无符号整数)(((int)q) + -0x00000000000000001)) + 1)], main()::Query*)'
更新: 我找出了错误的原因。我已将课程包含在我的主要课程中。当我将类定义移到 main 之外时,问题得到了解决。我对 C++/OOP 的理解不够好,无法理解为什么会发生这种情况。如果有人可以解释或指导我找到有用的资源,我将不胜感激。
【问题讨论】:
-
你
#include <algorithm>了吗? -
是的,谢谢。问题是不同的。上面所有的代码都在 main() 中。但是当我删除 main 之外的类定义时,问题就解决了。我不明白为什么。
-
@elexhobby 你应该edit你的问题并更改它以包含此信息。