Задать вопрос
@Snelsi

Возможно ли в С++ создать динамический класс-мимик, который может более одного раза «мимикрировать» под другой класс?

На примере игры:
Есть два класса "Вампир" и "Эльф" со своими параметрами и методами. И есть класс "Мимик", который при создании объекта не имеет жесткой привязки к какому-то другому классу, но в процессе игры может на время превратиться в персонажа другого класса и получить его возможности.

Возможно ли реализовать такое с классами на С++? (С учетом того, что реализацию всех других классов можно подогнать только ради этой цели). Возможно ли сделать такую привязку хотя бы раз за время жизни объекта?
Варианты через костыли тоже интересуют.
  • Вопрос задан
  • 177 просмотров
Подписаться 1 Сложный 1 комментарий
Решения вопроса 1
@xxx3Vxxx
Программист C++
Использовать объект-стратегию или объекты-делегаты.
Смысл в том что класс реализует свои методы через аналогичные методы делегатов.
https://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D0%B1%D...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sddvxd
class MimicBase{};
    class Vampire : public MimicBase{
    public:
        Vampire();
        Vampire(MimicBase& m) : MimicBase(m){};
    };
    class Elf : public MimicBase{
    public:
        Elf();
        Elf(MimicBase& m) : MimicBase(m){};
    };

    MimicBase m1;
    Vampire v1(m1);
    MimicBase m2(v1); //Обратно


Суть в том, что при инициализации объекта класса, например, Vampire, вы берете под контроль вызов цепочки конструкторов и можете подставить объект родителя
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы