
Работа с классами
Здравствуйте!
Столкнулся с проблемой. Не знаю, как к ней подойти.
Допустим, есть суперкласс и несколько подклассов, количество которых со временем будет расти. В этих классах имебтся статичные методы, имеющие один смысл, но работающие чуть по разному.
class Base { } class C1 : public Base { static void read(); static void write(); static void open(); static void close(); ... } class C2 : public Base { static void read(); static void write(); static void open(); static void close(); ... }
Мне нужно в зависимости от некоего строкового значения:
1) вызывать статичные методы нужного класса
2) создвавть экземпляры классов
Для вызова статичного метода просматривается следующий путь:
if (st == StringValue1) C1::read(); else if (st == StringValue2) C2::read(); ...
Для создания экземпляра:
Base *base{nullptr} ; if (st == StringValue1) base = new C1(); else if (st == StringValue2) base = new C2(); ...
И так далее. Для вызова каждого метода нужно создавать линейку if - else if, что громоздко и в последствие сложно сопровождаемо.
Вопрос, можно ли как-то это упростить? Можно ли указать список в одном месте, а потом вызывать методы?
Буду очень благодарен за помощь.
С уважением, Григорий

Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Unknown akadamn
- 24 января 2025 г. 17:14
Qt - Тест 001. Сигналы и слоты
- Результат:84баллов,
- Очки рейтинга4
- Unknown akadamn
- 24 января 2025 г. 16:22
Qt - Тест 001. Сигналы и слоты
- Результат:42баллов,
- Очки рейтинга-8


Использовать switch и enum.
Если совсем красиво делать то применить шаблон ООП "Стратегия"
Спасибо.
Но разве в switch можно использовать строки, как ключи?
А чем поможет enum?