错误"extra qualification ‘student::’ on member ‘student’ [-fpermissive] "

error "extra qualification ‘student::’ on member ‘student’ [-fpermissive] "

本文关键字:student -fpermissive member on extra 错误 qualification      更新时间:2023-10-16

我得到一个错误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();
}

成员函数/构造函数/析构函数的类内定义不需要诸如student::之类的限定。

所以这个代码,

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

应该是这样的:

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

只有在类之外定义成员函数(通常在.cpp文件中)时,才需要限定student::

如果构造函数的定义出现在类定义之外,那将是正确的。

类似代码:


更改自:

class Solution {
public:
  static int Solution::curr_h; // ----------------- ISSUE: "Solution::" is extra
  static int Solution::curr_m; // ----------------- ISSUE: "Solution::" is extra
};
int Solution::curr_h = 0;
int Solution::curr_m = 0;

至:

class Solution {
public:
  static int curr_h;  // ----------------- FIX: remove "Solution::"
  static int curr_m;  // ----------------- FIX: remove "Solution::"
};
int Solution::curr_h = 0; // <------ good here - "Solution::" is required
int Solution::curr_m = 0; // <------ good here - "Solution::" is required

  • 之所以会发生这种情况,是因为复制粘贴static需要类外的初始化,但也需要所有声明(int
  • 虽然这是正确的,但希望有一个更简单/更好的方法来做同样的事情
相关文章: