求助,编译器报错没看懂

P2010 [NOIP2016 普及组] 回文日期

NumberTrart @ 2022-10-27 21:21:26

#include<iostream>
using namespace std;
class EightNumberDate_AutoCorrect
{
    int year,month,day;
    void AutoCorrectMonthDay()
    {
        int t=year,r=0;
        while(t>0)
        {
            r=r*10+t%10;
            t/=10;
        }
        month=r/100;
        day=r%100;
    }
    void setYear(int t)
    {
        year=t;
        AutoCorrectMonthDay();
    }
    void setEight(int t,string s)
    {
        year=t/10000;
        month=t/100%100;
        day=t%100;
        EightNumberDate_AutoCorrect date;
        date.setYear(year);
        if(date.month>month||(date.month==month&&date.day>day))
        {
            if(s=="smaller")
                setYear(year-1);
            else
                AutoCorrectMonthDay();
        }
        else if(!(date.year==year&&date.month==month&&date.day==day))
        {
            if(s=="bigger")
                setYear(year+1);
            else
                AutoCorrectMonthDay();
        }
    }
};
typedef EightNumberDate_AutoCorrect DATE;
bool operator <(DATE a,DATE b)
{
    return a.month<b.month||(a.month==b.month&&a.day<b.day);
}
DATE d1,d2;
int a,b;
int main()
{
    cin>>a>>b;
    d1.setEight(a,"bigger");
    d2.setEight(b,"smaller");
    int cnt=0;
    for(int i=d1.year;i<=d2.year;i++)
    {
        DATE z;
        z.setYear(i);
        int maxx[]={-1,31,((z.year%4==0&&z.year%100!=0)||z.year%400==0)?29:28,31,30,31,30,31,31,30,31,30,31,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
        if(z.day<=maxx[z.month])//合法
            cnt++;
    }
    cout<<cnt;
    return 0;
}
/tmp/compiler_f74tiy_q/src: 在函数‘bool operator<(DATE, DATE)’中:
/tmp/compiler_f74tiy_q/src:48:14: 错误:‘int EightNumberDate_AutoCorrect::month’ is private within this context
   48 |     return a.month<b.month||(a.month==b.month&&a.day<b.day);
      |              ^~~~~
/tmp/compiler_f74tiy_q/src:5:14: 附注:declared private here
    5 |     int year,month,day;
      |              ^~~~~
/tmp/compiler_f74tiy_q/src:48:22: 错误:‘int EightNumberDate_AutoCorrect::month’ is private within this context
   48 |     return a.month<b.month||(a.month==b.month&&a.day<b.day);
      |                      ^~~~~
/tmp/compiler_f74tiy_q/src:5:14: 附注:declared private here
    5 |     int year,month,day;
      |              ^~~~~
/tmp/compiler_f74tiy_q/src:48:32: 错误:‘int EightNumberDate_AutoCorrect::month’ is private within this context
   48 |     return a.month<b.month||(a.month==b.month&&a.day<b.day);
      |                                ^~~~~
/tmp/compiler_f74tiy_q/src:5:14: 附注:declared private here
    5 |     int year,month,day;
      |              ^~~~~
/tmp/compiler_f74tiy_q/src:48:41: 错误:‘int EightNumberDate_AutoCorrect::month’ is private within this context
   48 |     return a.month<b.month||(a.month==b.month&&a.day<b.day);
      |                                         ^~~~~
/tmp/compiler_f74tiy_q/src:5:14: 附注:declared private here
    5 |     int year,month,day;
      |              ^~~~~
/tmp/compiler_f74tiy_q/src:48:50: 错误:‘int EightNumberDate_AutoCorrect::day’ is private within this context
   48 |     return a.month<b.month||(a.month==b.month&&a.day<b.day);
      |                                                  ^~~
/tmp/compiler_f74tiy_q/src:5:20: 附注:declared private here
    5 |     int year,month,day;
      |                    ^~~
/tmp/compiler_f74tiy_q/src:48:56: 错误:‘int EightNumberDate_AutoCorrect::day’ is private within this context
   48 |     return a.month<b.month||(a.month==b.month&&a.day<b.day);
      |                                                        ^~~
/tmp/compiler_f74tiy_q/src:5:20: 附注:declared private here
    5 |     int year,month,day;
      |                    ^~~
/tmp/compiler_f74tiy_q/src: 在函数‘int main()’中:
/tmp/compiler_f74tiy_q/src:55:27: 错误:‘void EightNumberDate_AutoCorrect::setEight(int, std::string)’ is private within this context
   55 |     d1.setEight(a,"bigger");
      |                           ^
/tmp/compiler_f74tiy_q/src:22:10: 附注:declared private here
   22 |     void setEight(int t,string s)
      |          ^~~~~~~~
/tmp/compiler_f74tiy_q/src:56:28: 错误:‘void EightNumberDate_AutoCorrect::setEight(int, std::string)’ is private within this context
   56 |     d2.setEight(b,"smaller");
      |                            ^
/tmp/compiler_f74tiy_q/src:22:10: 附注:declared private here
   22 |     void setEight(int t,string s)
      |          ^~~~~~~~
/tmp/compiler_f74tiy_q/src:58:18: 错误:‘int EightNumberDate_AutoCorrect::year’ is private within this context
   58 |     for(int i=d1.year;i<=d2.year;i++)
      |                  ^~~~
/tmp/compiler_f74tiy_q/src:5:9: 附注:declared private here
    5 |     int year,month,day;
      |         ^~~~
/tmp/compiler_f74tiy_q/src:58:29: 错误:‘int EightNumberDate_AutoCorrect::year’ is private within this context
   58 |     for(int i=d1.year;i<=d2.year;i++)
      |                             ^~~~
/tmp/compiler_f74tiy_q/src:5:9: 附注:declared private here
    5 |     int year,month,day;
      |         ^~~~
/tmp/compiler_f74tiy_q/src:61:20: 错误:‘void EightNumberDate_AutoCorrect::setYear(int)’ is private within this context
   61 |         z.setYear(i);
      |                    ^
/tmp/compiler_f74tiy_q/src:17:10: 附注:declared private here
   17 |     void setYear(int t)
      |          ^~~~~~~
/tmp/compiler_f74tiy_q/src:62:31: 错误:‘int EightNumberDate_AutoCorrect::year’ is private within this context
   62 |         int maxx[]={-1,31,((z.year%4==0&&z.year%100!=0)||z.year%400==0)?29:28,31,30,31,30,31,31,30,31,30,31,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
      |                               ^~~~
/tmp/compiler_f74tiy_q/src:5:9: 附注:declared private here
    5 |     int year,month,day;
      |         ^~~~
/tmp/compiler_f74tiy_q/src:62:44: 错误:‘int EightNumberDate_AutoCorrect::year’ is private within this context
   62 |         int maxx[]={-1,31,((z.year%4==0&&z.year%100!=0)||z.year%400==0)?29:28,31,30,31,30,31,31,30,31,30,31,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
      |                                            ^~~~
/tmp/compiler_f74tiy_q/src:5:9: 附注:declared private here
    5 |     int year,month,day;
      |         ^~~~
/tmp/compiler_f74tiy_q/src:62:60: 错误:‘int EightNumberDate_AutoCorrect::year’ is private within this context
   62 |         int maxx[]={-1,31,((z.year%4==0&&z.year%100!=0)||z.year%400==0)?29:28,31,30,31,30,31,31,30,31,30,31,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
      |                                                            ^~~~
/tmp/compiler_f74tiy_q/src:5:9: 附注:declared private here
    5 |     int year,month,day;
      |         ^~~~
/tmp/compiler_f74tiy_q/src:63:14: 错误:‘int EightNumberDate_AutoCorrect::day’ is private within this context
   63 |         if(z.day<=maxx[z.month])//合法
      |              ^~~
/tmp/compiler_f74tiy_q/src:5:20: 附注:declared private here
    5 |     int year,month,day;
      |                    ^~~
/tmp/compiler_f74tiy_q/src:63:26: 错误:‘int EightNumberDate_AutoCorrect::month’ is private within this context
   63 |         if(z.day<=maxx[z.month])//合法
      |                          ^~~~~
/tmp/compiler_f74tiy_q/src:5:14: 附注:declared private here
    5 |     int year,month,day;
      |              ^~~~~

by Untitled10032 @ 2022-10-27 21:39:02

使用了私有变量和方法。建议在类的声明中合适的地方加上 public:


|