Java-подобный класс class в cpp

#c #reflection

#c #отражение

Вопрос:

Я хочу написать программу, которая поддерживает несколько типов команд.
Чтобы сделать его универсальным и легко расширяемым для последующих новых команд, я хочу написать класс для каждой команды (со своей собственной обработкой) и вызвать базовый класс ‘command’ с функцией handler.
Я знаю, что в Java есть class class, который помогает с такой вещью — определять «в потоке» тип класса, с которым он имеет дело.
Имеет ли cpp аналогичный механизм? Если да, то что это такое и как мне его использовать?
Если нет, то что я могу сделать, чтобы его было легко расширять?

Большое спасибо.

Ответ №1:

Вы могли бы реализовать командный класс с помощью чисто виртуального метода.

http://www.exforsys.com/tutorials/c-plus-plus/c-pure-virtual-function-and-base-class.html

Ответ №2:

Хотя вы можете использовать Class class для определения потока в Java, лучше использовать полиморфизм — он делает класс открытым для расширения, не требуя модификации («O» в SOLID).

То же самое верно и в C . Вы могли бы использовать RTTI, но виртуальные методы позволяют расширять класс с помощью команд, не изменяя его.

Из «Шаблонов проектирования» Гамма и др.:

Ключом к этому шаблону является абстрактный командный класс, который объявляет интерфейс для выполнения операций. В своей простейшей форме этот интерфейс включает абстрактную операцию выполнения.

Ответ №3:

Вы можете использовать RTTI, но я предлагаю вам найти другой способ сделать это.