Как определять новые методы в производных классах? Приветствую.
Есть следующая задача. Существует список сотрудников двух типов: employee и manager.
Определил для них соответствующие классы:class Person
{
public:
virtual void show() = 0;
};
class Employee: public Person
{
public:
void show()
{
std::cout << "Employee" << std::endl;
}
};
class Manager: public Person
{
public:
void show()
{
std::cout << "Manager" <getListEmployee(); // Будет ошибка, т.к. метод не определен в родительском классе
Но согласно общей концепции, у обычного сотрудника не может быть подчиненных. Значит метод getListEmployee() не нужен родительскому классу Person.
Как быть в таком случае? Как определять новые методы в родительских классах?

21 Авг 2019 в 07:01
178 +1
0
Ответы
1

В данной ситуации можно создать интерфейс (абстрактный класс) для классов, у которых должен быть определен метод getListEmployee(). Например, можно создать класс с названием EmployeeWithSubordinates, который наследуется от класса Person и содержит метод getListEmployee(). Далее классы Employee и Manager будут наследоваться от класса EmployeeWithSubordinates, если им необходимо иметь метод getListEmployee().

Пример реализации:```cpp
class EmployeeWithSubordinates : public Person {
public:
virtual void getListEmployee() = 0;
};

class Employee : public EmployeeWithSubordinates {
public:
void show() override {
std::cout << "Employee" << std::endl;
}

void getListEmployee() override {
// Реализация метода для класса Employee
}

};

class Manager : public EmployeeWithSubordinates {
public:
void show() override {
std::cout << "Manager" << std::endl;
}

void getListEmployee() override {
// Реализация метода для класса Manager
}

};

class PersonFactory {
public:
static EmployeeWithSubordinates* create(const std::string& type) {
if (type == "Employee")
return new Employee();
if (type == "Manager")
return new Manager();

return NULL;
}

};


Теперь у классов Employee и Manager есть метод getListEmployee(), которые им явно необходимы, и при этом эти методы не определены в классе Person.
20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир