Member 13100248 Ответов: 1

Я не знаю, где я ошибаюсь...... plz cn кто-нибудь мне поможет


я могу использовать этот класс в другой программе
и это показывает ошибку



#include<dos.h>

class mydate
{
 int d,m,y;
 public:
    friend void inputdate();
       void displaydate(void);
};
   void inputdate(mydate &t)
{
  mydate t;
  TOP:
  cout<<"\n Enter date(dd-mm-yy)forms:";
  cin>>t.d>>t.m>>t.y;
  if(t.d<1||t.d>31)
  {
    cout<<"\n Wrong day entered";
    goto TOP;
  }
  if(t.m<1||t.m>12)
  {
   cout<<"\nWrong month entered";
   goto TOP;
 }
 if(t.y<1000||t.y>9999)
 {
   cout<<"\n Wrong year entered";
   goto TOP;
 }
}


Что я уже пробовал:

Я не знаю где моя ошибка

1 Ответов

Рейтинг:
0

OriginalGriff

Список не маленький...

Для начала, когда вы получаете ошибку, расскажи нам что это - это значит, дайте нам сообщение об ошибке, скажите, где это происходит и как вы это делаете.
Это также хорошая идея, чтобы сказать нам, какой компилятор вы используете, так как мы понятия не имеем...

Но...когда я пробую онлайн-компилятор C++, он выдает много ошибок:

void inputdate(mydate &t)
{
mydate t;
Объявление локальной переменной t затемняет параметр с тем же именем: это означает, что вы вообще не можете получить доступ к этому параметру, так зачем же его иметь? На первый взгляд, вы должны полностью удалить локальное объявление и использовать этот параметр.
class mydate
{
int d,m,y;
И
cin>>t.d>>t.m>>t.y;
Поскольку вы не указываете доступ к переменным при их объявлении, они private по умолчанию: таким образом, вы не можете получить к ним доступ извне самого класса. С тех пор как inputdate функция не является частью mydate класс, он не может получить доступ к закрытым членам. Он не имеет той же подписи, что и friend функция, объявленная в классе:
class mydate
    {
    ...
    friend void inputdate();
    ...
    };
void inputdate(mydate &t)
Так что он не может получить доступ private данные.
Либо удалите параметр из определения функции, либо добавьте его в friend объявление функции.

И забудь об этом goto даже существовать. Немедленно удалите его из всего вашего кода и не пытайтесь использовать его по крайней мере в течение пяти лет - к этому времени у вас будет достаточно опыта, чтобы понять, почему вы не должны использовать его для такого тривиального кода, как этот, и когда это уместно. Используйте такие циклы, как while или do ...while вместо.