| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1471 人关注过本帖
标题:刷题时遇到了奇怪的错误
只看楼主 加入收藏
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
结帖率:82.35%
收藏
已结贴  问题点数:20 回复次数:2 
刷题时遇到了奇怪的错误
题目来至https://www.

我的代码:
程序代码:
#include<iostream>
#include<vector>
#include<algorithm>
#include<string.h>
using namespace std;

typedef struct report Report;
struct report
{
    char Number[9];
    int score1;
    int score2;
};

class Solution{
public:
    bool cmp(Report a,Report b)
    {
        if(a.score1+a.score2 > b.score1+b.score2) return true;
        else if(a.score1+a.score2 == b.score1+b.score2)
        {
            if(a.score1 > b.score1) return true;
            if(a.score1 == b.score1)
                return strcmp(a.Number,b.Number) < 0 ? true : false;
        }
        return false;
    }

    void scoreSort(){
        vector<vector<Report> > student;
        student.resize(4);

        int n,L,H;
        cin>>n>>L>>H;

        int count=0;
        for(int i=0;i<n;i++){
            Report stu;
            cin>>stu.Number>>stu.score1>>stu.score2;
            if(stu.score1<L || stu.score2<L) continue;
            count++;
            if(stu.score1>=H && stu.score2>=H) student[0].push_back(stu);
            else if(stu.score1>=H && stu.score2<H) student[1].push_back(stu);
            else if(stu.score1<H && stu.score1>=stu.score2) student[2].push_back(stu);
            else student[3].push_back(stu);
        }

        for(int i=0;i<4;i++){
            sort(student[i].begin(),student[i].end(),cmp);
        }
        for(int i=0;i<4;i++){
            vector<Report>::iterator it;
            for(it=student[i].begin();it != student[i].end();it++)
                cout<<it->Number<<" "<<it->score1<<" "<<it->score2<<endl;
        }
    }
};

int main(){
    Solution a;
    a.scoreSort();
    return 0;
}

错误:
error: must use '.*' or '->*' to call pointer-to-member function in '((__gnu_cxx::__ops::_Iter_comp_iter<bool (Solution::*)(report, report)>*)this)->__gnu_cxx::__ops::_Iter_comp_iter<bool (Solution::*)(report, report)>::_M_comp (...)', e.g. '(... ->* ((__gnu_cxx::__ops::_Iter_comp_iter<bool (Solution::*)(report, report)>*)this)->__gnu_cxx::__ops::_Iter_comp_iter<bool (Solution::*)(report, report)>::_M_comp) (...)'|

看提示,大概是sort()的用法错了,搞不懂,不能这样调用吗?

[此贴子已经被作者于2018-3-16 12:19编辑过]

搜索更多相关主题的帖子: report int Solution student stu 
2018-03-16 10:36
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
收藏
得分:20 
要么把 cmp 函数写在类外,要么定义成静态
静态:
static bool cmp(Report a,Report b);

只注意到你的编译错误,具体运行有什么错误没看
2018-03-16 15:00
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
收藏
得分:0 
回复 2楼 Jonny0201
谢谢,已解决。
2018-03-18 10:40
快速回复:刷题时遇到了奇怪的错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036854 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved