Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить структуру из наследуемой структуры. 
:(
    Опции темы
admsasha
Дата 2.12.2019, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Что-то немного запутался.


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

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);


Это сообщение отредактировал(а) admsasha - 2.12.2019, 09:23
PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 2.12.2019, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



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



--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
xvr
Дата 2.12.2019, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



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

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

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

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0712 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.