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

21 Авг 2019 в 07:01
148 +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 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 913 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир