Есть ли способ в C ++ для приведения / копирования родительского класса в дочерний класс? - PullRequest
1 голос
/ 31 марта 2020

Я получаю сложный объект из фреймворка, который я не могу изменить:

Parent parent = framework.get();

Я хотел бы добавить некоторые атрибуты и методы для этого родителя:

class Child : public Parent {
    public:
        inline Child() {}
        int extraVariable = 999;
        int extraMethod() { return 666; }
    };

Is есть ли способ «привести» или скопировать экземпляр класса Parent в класс Child, кроме копирования вручную всех атрибутов?

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1.} * *}} не python, но я готов взломать его вместе (это личный код, то есть уродливый в порядке).

1 Ответ

3 голосов
/ 31 марта 2020

Вы можете добавить конструктор преобразования или два к Child.

Пример:

class Child : public Parent {
public:
    // converting constructors
    Child(const Parent& p) : Parent(p) {}        // copy
    Child(Parent&& p) : Parent(std::move(p)) {}  // move

    //...
}

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...