错误"extra qualification ‘student::’ on member ‘student’ [-fpermissive] "
error "extra qualification ‘student::’ on member ‘student’ [-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();
}
成员函数/构造函数/析构函数的类内定义不需要诸如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
) - 虽然这是正确的,但希望有一个更简单/更好的方法来做同样的事情
相关文章:
- ISO C++禁止指针和整数 [-fpermissive] [c++] 之间的比较
- 错误:'operator>'不匹配(操作数类型为 'Student' 和 'Student'
- 错误:将“const sdf”作为“this”参数传递会丢弃限定符 [-fpermissive]
- 有没有办法查看此语句"Student s3=func(s1, s4)"将调用哪个构造函数?
- 从"char"到"const char*"的无效转换[-fpermissive](idk why)
- 二进制树插入()const fpermissive误差
- 错误:从“ int*”转换为“ int” [-fpermissive]
- 将Boost iNCETE_INTERVAL传递给该参数丢弃了预选赛[-fpermissive]
- 递归调用中出现错误"[Error] expression list treated as compound expression in initializer [-fpermissive]"
- 错误:表达式列表在初始化器[-fpermissive] Double Paycalc(p,yir,y)中被视为复合表达式
- 进行临时[-fpermissive]的地址
- 从"char"到"const char*"的转换无效 [-fpermissive] str::atoi (字符串到整数)
- 将矩阵传递给函数。 "invalid conversion from 'int (*)[columns]' to 'int' [-fpermissive]"
- C2679:二进制"<<":未找到采用类型为"student"的右操作数的运算符(或没有可接受的转换)
- 错误:非静态引用成员"std::ostream&Student::out",无法使用默认赋值运算符
- 编译错误:无法将参数 1 从 'student[20]' 转换为 'student'
- 错误:获取临时[-fpermissive] -npc_multivendor的地址
- 错误:从“ const char*”转换为“ char*” [-fpermissive]
- 枚举上的"no 'operator++(int)' declared for postfix '++' [-fpermissive]"
- 错误"extra qualification ‘student::’ on member ‘student’ [-fpermissive] "