Именованные возвращаемые значения больше не поддерживаются ошибкой - PullRequest
0 голосов
/ 14 марта 2020

При использовании приведенного ниже кода я получаю следующую ошибку:

именованные возвращаемые значения больше не поддерживаются return a.mark> b.mark;

Can Кто-нибудь, пожалуйста, помогите диагностировать эту ошибку?

#include<bits/stdc++.h>

using namespace std;
struct student
{
    public:
    string name;
    int rank;
    int  mark;
    student()
    {
        mark=0;
    }
};

bool compare(student a,student b)
    return a.mark>b.mark;



int main()
{

    int n;
    cin>>n;
    string*input=new string[n];
    student s[n];
    for(int i=0;i<n;i++)
    {
        getline(cin,input[i]);
    }
    //string *name=new string[n];
    //int *nums=new int[n];
   // int *next_nums_pos=new int[n];

    for(int i=0;i<n;i++)
    {
        int j=0;
        int count=0;
        int start=0;
        //nums[i]=new int[100];
        //next_nums_pos[i]=0;
        //nums[i]=0;
        int size=0; 
        while(input[i][j]!='\0')
        {
          if(count==0)
           {    
              if(input[i][j]==' ')
              {   
                s[i].name=input[i].substr(start,size);
                //cout<<name[i]<<endl;
                start=j+1;
                count++;
                size=0;
              }
              else
                size++;
           }
         else
           {
             if(input[i][j]==' ')
             {
                 int m;
                 stringstream mark(input[i].substr(start,size));
                 mark>>m;
                 s[i].mark+=m;
                 start=j+1;
                 size=0;
             }
             else
                size++;
           }

         j++;
        } 
         int m;
         stringstream mark(input[i].substr(start,size));
         mark>>m;
         s[i].mark+=m; 
    }
    sort(s,s+n,compare);
    for(int i=0;i<n;i++)
    {
        cout<<i+1<<" "<<s[i].name;
    }
    //cout<<name[0]<<endl;
    //for(int i=0;i<n;i++)
     //   cout<<name[i]<<endl;

    return 0;
}

1 Ответ

1 голос
/ 14 марта 2020

Я добавил {}, и это исправлено:

bool compare(student a,student b){
    return a.mark>b.mark;
}

Вы должны использовать {} для функций, мы можем лучше читать и понимать ваш код, и вы никогда не увидите подобных ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...