main函数中FRESHMAN显示未定义标识符。(不能更改main函数)
#include<iostream>
#include<string>
using namespace std;
class Person {
public:
Person(string n, char s) {
name = n;
sex = s;
}
void print() {
cout << "Name:" << name << ", Sex:" << sex << endl;
}
protected:
string name;
char sex;
};
class Student :public Person {
private:
enum sta { FRESHMAN = 0, SOPHOMORE, JUNIOR, SENIOR }status;
public:
Student(string n,char s,sta st) :Person(n, s) {
status = st;
}
void print() {
cout << "Name:" << name << ", Sex:" << sex << endl;
cout << "Status:" << status;
}
};
int main() {
Person person("ZhangSan", 'M');
Student student("LiSi", 'F',FRESHMAN);
person.print();
student.print();
return 0;
}
在类中定义枚举类型,那么作用域就仅限类中,main函数中并不知道FRESHMAN是什么。
把enum放外面
#include<iostream>
#include<string>
using namespace std;
class Person {
public:
Person(string n, char s) {
name = n;
sex = s;
}
void print() {
cout << "Name:" << name << ", Sex:" << sex << endl;
}
protected:
string name;
char sex;
};
enum sta { FRESHMAN = 0, SOPHOMORE, JUNIOR, SENIOR } status;
class Student :
public
Person {
public:
Student(string n,char s,sta st) :Person(n, s) {
status = st;
}
void print() {
cout << "Name:" << name << ", Sex:" << sex << endl;
cout << "Status:" << status;
}
};
int main() {
Person person("ZhangSan", 'M');
Student student("LiSi", 'F',FRESHMAN);
person.print();
student.print();
return 0;
}