Size: a a a

2021 February 26

П

Пашечка in supapro.cxx
Такие касты можно при преобразовании наследника к типу родительского класса
источник

ID

In Dev in supapro.cxx
Nastya Medveda
Может и подойдет, но я понимаю что в С++ приходится конвертить типы очень часто и еще более часто я буду встречаться с указателями. Я хочу понять как в этом случае поступать.
Конвертить типы приходится часто во многих случаях, а конвертить указатели как правило только при наследовании и разного рода type-erasure
источник

NM

Nastya Medveda in supapro.cxx
В данном случае Я хочу поместить котенка в коробку из под обуви. И получаю ошибку "сделать невозможно объект не ботинок"
источник

LA

Liber Azerate in supapro.cxx
Nastya Medveda
Как сделать каст типа указателя?
int a = 5;
int *p = &a;
double *d = static_cast<double*>(p); // Static_cast from 'int *' to 'double *' is not allowed
Это UB
источник

LA

Liber Azerate in supapro.cxx
Liber Azerate
Это UB
Так делать нельзя и не надо
источник

П

Пашечка in supapro.cxx
Nastya Medveda
В данном случае Я хочу поместить котенка в коробку из под обуви. И получаю ошибку "сделать невозможно объект не ботинок"
Тогда reinterpret_cast и быть готовым к тому, что перепутаете коробки и котенок оцарапает вам ногу)
источник

NM

Nastya Medveda in supapro.cxx
Есть указатель, который вмещает в себя адрес памяти, количество байтов которое занимает переменная и ее тип. Почему я не могу сказать укзателю, что теперь по этому адресу int, а не double?
источник

AF

Aidar Fattakhov in supapro.cxx
Nastya Medveda
В данном случае Я хочу поместить котенка в коробку из под обуви. И получаю ошибку "сделать невозможно объект не ботинок"
А этикетка на коробке то как поможет?
источник

AF

Aidar Fattakhov in supapro.cxx
Ну поменяешь ты ее и что
источник

LA

Liber Azerate in supapro.cxx
Nastya Medveda
Есть указатель, который вмещает в себя адрес памяти, количество байтов которое занимает переменная и ее тип. Почему я не могу сказать укзателю, что теперь по этому адресу int, а не double?
Потому что это нарушение strict aliasing
источник

LA

Liber Azerate in supapro.cxx
Компилятор опирается на то, что адресумые типы верны
источник

П

Пашечка in supapro.cxx
Nastya Medveda
Есть указатель, который вмещает в себя адрес памяти, количество байтов которое занимает переменная и ее тип. Почему я не могу сказать укзателю, что теперь по этому адресу int, а не double?
Потому что изначально вы положили в коробку котенка, а теперь говорите компилятору, что там сидит щенок) Вот компилятор и ругается
источник

LA

Liber Azerate in supapro.cxx
Пашечка
Потому что изначально вы положили в коробку котенка, а теперь говорите компилятору, что там сидит щенок) Вот компилятор и ругается
Компилятор бы не ругался, не будь это каст с проверкой. Но даже без проверки это UB
источник

ЕП

Евгений Попов... in supapro.cxx
Вспоминается анекдот про то как поместить в клетку льва
источник

П

Пашечка in supapro.cxx
Liber Azerate
Компилятор бы не ругался, не будь это каст с проверкой. Но даже без проверки это UB
Ну, про реинтерпрет я упомянул чуть выше)
источник

П

Пашечка in supapro.cxx
Евгений Попов
Вспоминается анекдот про то как поместить в клетку льва
Шо за анекдот?
источник

NM

Nastya Medveda in supapro.cxx
Евгений Попов
Вспоминается анекдот про то как поместить в клетку льва
Хороший анекдот.
источник

LA

Liber Azerate in supapro.cxx
Пашечка
Шо за анекдот?
Господа, анекдоты желательно во флудилку
источник

ЕП

Евгений Попов... in supapro.cxx
Бросить в клетку камень и присвоить значение "Лев"
источник

ЕП

Евгений Попов... in supapro.cxx
Это не флуд, а наглядное объяснение небезопасного каста
источник