【问题标题】:Sorting array of class objects using member function使用成员函数对类对象数组进行排序
【发布时间】: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 的理解不够好,无法理解为什么会发生这种情况。如果有人可以解释或指导我找到有用的资源,我将不胜感激。

【问题讨论】:

标签: c++ sorting


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-02
    • 2015-06-26
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    相关资源
    最近更新 更多