170 похожих чатов

Соответственно меня интересует, а как правильно делать апкастинг, чтобы всё

нормально считалось?

15 ответов

26 просмотров

Иметь vector<std::unique_ptr<Base>>

✙ASDA✙- Автор вопроса

Подождите, а как же принцип постановки Лисков?

Об чем ты, пришелец?

✙ASDA✙- Автор вопроса
Anatoly Shirokov
Об чем ты, пришелец?

Ну вот есть у меня класс Фрукт и есть класс Банан. Почему я не могу скастить конкретный банан во фрукт?

✙ASDA✙
Подождите, а как же принцип постановки Лисков?

а в чем проблема? проблема же в векторе, нельзя подставить vector<Derived> вместо vector<Base>

✙ASDA✙
Ну вот есть у меня класс Фрукт и есть класс Банан....

Массив бананов не является наследником массива фруктов

✙ASDA✙- Автор вопроса
✙ASDA✙- Автор вопроса
Anatoly Shirokov
Массив бананов не является наследником массива фру...

Тогда массив никак скастить не получится? Нужно будет ручками, в цикле каждый банан кастить во фрукт и добавлять в массив фруктов?

✙ASDA✙
Тогда массив никак скастить не получится? Нужно бу...

Да, и получишь срезку каждого банана до фрукта, все данные банана пропадут

Sergey Kaniskin
Иметь vector<std::unique_ptr<Base>>

Вот здесь тебе уже показали, как правильно хранить коллекцию фруктов без потери информации о наследнике

✙ASDA✙
Тогда массив никак скастить не получится? Нужно бу...

https://isocpp.org/wiki/faq/containers#container-ptr-conversion есть тут немного интуиции, хотя можно было бы теоретически конвертировать вектор константных указателей

✙ASDA✙
Тогда массив никак скастить не получится? Нужно бу...

rust, например, более современный, и там ковариантность лучше продумана. Там можно передать массив константных указателей на конкретный тип туда, где ждут массив указателей на базовый класс (ну, только в терминах Раста) https://godbolt.org/z/EcqhneMn1

Надо объявить массив Base*[50] И заполнить его адресами каждого Derived из массива derivs. Потом уже с массивом указателей на Base можно работать

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта