Подтвердить что ты не робот

Ошибка "дополнительная квалификация" студент:: на члена студента [-fpermissive] "

Я получаю сообщение об ошибке extra qualification ‘student::’ on member ‘student’ [-fpermissive].
А также почему name::name такой синтаксис используется в конструкторе?

#include<iostream>
#include<string.h>
using namespace std;
class student
{
 private:
     int id;
     char name[30];
 public:
/*   void read()
     {
        cout<<"enter id"<<endl;
        cin>>id;
        cout<<"enter name"<<endl;
        cin>>name;
     }*/
     void show()
     {
        cout<<id<<name<<endl;
     }
     student::student()
     {
        id=0;
        strcpy(name,"undefine");
     }
};
main()
{
 student s1;
// s1.read();
 cout<<"showing data of s1"<<endl;
 s1.show();
// s2.read();
  //cout<<"showing data of s2"<<endl;
 //s2.show();
}
4b9b3361

Ответ 1

В классах определения функции-члена (-ов)/конструктора (-ов)/деструктора не требуются квалификации, такие как student::.

Итак, этот код,

 student::student()
 {
    id=0;
    strcpy(name,"undefine");
 }

должно быть следующим:

 student()
 {
    id=0;
    strcpy(name,"undefine");
 }

Квалификация student:: требуется, только если вы определяете функции-члены вне класса, обычно в .cpp файле.

Ответ 2

Было бы правильно, если бы определение конструктора появилось вне определения класса.