클래스 상속자에서 부모 클래스에 저장된 값을 출력하려면
조회수 668회
#include <iostream>
#include <vector>
#include <string>
using namespace std;
enum EmployeeLevel { 사원, 대리, 과장, 차장, 부장 };
class Employee {
string name;
EmployeeLevel level;
public:
Employee(const string &_name = "A", const EmployeeLevel &_level = 사원): name(_name), level(_level) {}
string getName() {
return name;
}
EmployeeLevel getLevel() {
return level;
}
friend ostream& operator << (ostream& os, const Employee &e);
};
class Manager : public Employee {
vector<Employee*> group;
public:
Manager(const string &name, const EmployeeLevel &level) : Employee(name, level) {}
void addEmployee(Employee* _group) {
Employee* temp = new Employee;
temp = _group;
group.push_back(temp);
}
string getEmployeeName() {
return getName();
}
EmployeeLevel getEmployeeLevel() {
return getLevel();
}
friend ostream& operator << (ostream& os, const Manager &m);
};
ostream& operator << (ostream& os, const Employee &e) {
os << e.level << '\t' << e.name << endl;
return os;
}
ostream& operator << (ostream& os, const Manager &m) {
os << "List of employees managed by me" << endl;
os << m.getEmployeeName() << '\t' << m.getEmployeeLevel() << endl;
for (vector<Employee*>::const_iterator it = (m.group).begin(); it != (m.group).end(); it++) {
os << (**it).getLevel() << '\t' << (**it).getName() << endl;
}
return os;
}
int main() {
Employee e1("홍", 사원), e2("김", 대리), e3("차", 사원);
cout << e1 << e2 << e3;
Manager m1("Tom", 차장);
m1.addEmployee(&e1);
m1.addEmployee(&e2);
m1.addEmployee(&e3);
cout << endl << "Information for Manager" << endl;
cout << m1;
}
Manger 클래스를 바탕으로 << operator함수를 만들었는데,
os << m.getEmployeeName() << '\t' << m.getEmployeeLevel() << endl;
이 부분이 자꾸 오류가 발생합니다.
어떻게 고쳐줘야 하는걸까요? ㅠㅠ
클래스 상속을 오늘 배워서 예제를 연습해봤는데, 컴파일이 안되네요 ㅠㅠ
댓글 입력