Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Получить структуру из наследуемой структуры.


Автор: admsasha 2.12.2019, 09:22
Что-то немного запутался.


Пусть будут такие структуры
Код

struct P {

};
struct C : P {
    std::string txt;
};



Псевдокод. Где сперва создаем структуру C, и записываем в tmp типа родительской структуры.
Код

    C child = C();
    child.txt="test";
    P tmp = child;


Как теперь из родительской структуры преобразовать в структуру C ?

Типа как то так. Но это не работает.
Код

    C child2 = static_cast<C>(tmp);

Автор: kapbepucm 2.12.2019, 14:43
Что по вашему должно происходить тут?
Цитата(admsasha @  2.12.2019,  09:22 Найти цитируемый пост)
P tmp = child;

Автор: xvr 2.12.2019, 15:31
Цитата(admsasha @  2.12.2019,  09:22 Найти цитируемый пост)
Как теперь из родительской структуры преобразовать в структуру C ?

Из tmp - никак. Нет у неё наследуемой структуры.

У вас тут есть 2 разные (т.е. никак друг с другом не пересекающиеся) структуры: 
  •  tmp (типа P) - абсолютно пустая
  •  child (типа С) - вы её чем то проинициализировали. Вот из неё нечто типа P получить можно (как у вас было static_cast<P>(child) ).
Получить что либо из tmp нельзя - она ну абсолютно пустая, и не наследник, а самый, что ни на есть, родитель

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)