|
0 / 0 / 0
Регистрация: 18.09.2018
Сообщений: 4
|
|
Восходящее преобразование массива производного класса к родительскому?03.01.2020, 22:54. Показов 6965. Ответов 114
Есть два класса base_Class(родитель) и derived_Class(потомок)
Есть некая виртуальная функция в base_Class которая принимает в качестве параметра массив объектов класса f(base_Class **mass) Чтобы воспользоваться данной функцией для производного класса, необходимо привести массив производного класса к массиву родительского Массивы: base_Class *baseMass[100], derived_Class *derivedMass[100] Как произвести такое приведение типов?
0
|
|
| 03.01.2020, 22:54 | |
|
Ответы с готовыми решениями:
114
Восходящее преобразование Восходящее преобразование, объяснить код |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 03.01.2020, 23:06 | |||||||
Сообщение было отмечено GoshaRubi как решение
Решение
1
|
|||||||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|
| 03.01.2020, 23:20 | |
|
1
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|
| 03.01.2020, 23:26 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 04.01.2020, 00:05 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 18.09.2018
Сообщений: 4
|
|
| 04.01.2020, 00:24 [ТС] | |
|
hoggy спасибо
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|
| 04.01.2020, 00:24 | |
|
тож не пойму где UB, единственно для чуть большей безопасности изменить тип на base*const*
0
|
|
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|||
| 04.01.2020, 00:27 | |||
|
1
|
|||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 04.01.2020, 00:35 | ||
|
rat0r,
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 04.01.2020, 00:39 | ||
|
не понятно, какое вообще отношение additive operators имеют к приведению типов?
1
|
||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
||||
| 04.01.2020, 00:44 | ||||
|
1
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 04.01.2020, 00:58 | |
|
1
|
|
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
||
| 04.01.2020, 01:02 | ||
|
0
|
||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|
| 04.01.2020, 07:40 | |
|
del
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 04.01.2020, 16:45 | |||
|
ты лишь скинул ссылку без каких либо объяснений. любой дурак может сказать: в коде UB не любой сможет объяснить: что конкретно с ним не так. и если человек не может внятно объяснить что не так с кодом, тогда зачем его вообще слушать? трудно показать черную кошку в черной комнате. особенно, если её там нет. я бы, конечно, мог бы обсудить с тобой, почему ub`шные тезисы по твоей ссылке не подходят под данный случай. но ты сам не желаешь ничего внятно объяснять, и не даёшь развернутых ответов, а я не хочу зря тратить своё время.
0
|
|||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
||||
| 04.01.2020, 18:43 | ||||
base* (из выражения типа "pointer to [T = base*]", участвующего в арифметике указателей) и der* (array element type) similar.
Ответ
Не являются.
2
|
||||
|
Комп_Оратор)
|
|||
| 04.01.2020, 21:54 | |||
|
GoshaRubi, вы пишете
Покажите объявления метода и массивов в обоих классах.
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||||||||
| 04.01.2020, 22:07 | |||||||||||||||||||||||
|
вообще не развернуто. вместо того, что бы разъяснить какую конкретно ты видишь проблему в моём коде, ты зачем-то начинаешь ссылаться на различные источники, которые якобы должны пролить свет на неведомую проблему в коде. ты саму проблему то обозначить можешь? вот своими словами: что конкретно не так то? нет. не сможешь. потому что на самом деле в представленном мною коде нет никакой проблемы. результат сборки - корректно работающая программа. понимаешь, в чем фишка то. вот ты заявляешь, что переходить на красный свет светофора нельзя. что последствия могут быть неопределенно-печальными. я тебя спрашиваю: почему нельзя то? что такого ужассного может случится? и вместо того, что бы просто по-человечески объяснить банальную причину: "ну нас машина может задавить", начинаешь нести какую то околесицу по принципу: "ну так в умной книжке написанно. вот там написанно - низзя". и вот у меня возникает вопрос: ты вообще понимаешь почему "низзя" то? вот ты сослался на: что именно может привести к некорректному поведению программы? похоже что нет, не понимаешь. а я тебе сейчас объясню на примерах, который иллюстрируют UB в действии: 1. UB, как следствие некорректной реинтерпритации масива данных для типов с различным sizeof
UB, как следствие реинтерпритации класса объекта, без поправки на смещение адреса в условиях множественного наследования:
результат работы программы:
------------------- итого: проблема действительно может быть в случае неверной ре-интерпритации типа объекта. однако, в представленном мною коде такой проблемы нет. и отсюда у меня резонный вопрос: до чего конкретно ты докалебался?
1
|
|||||||||||||||||||||||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
||||||||
| 04.01.2020, 22:58 | ||||||||
der* используется указатель на base* при том, что типы der* и base* не являются similar, то я не знаю, как это ещё объяснить.![]() Поэтому особо тут не торопился распинываться с детальными доказательствами. ![]() Вроде ясно написано, что: «if the expressions P or Q have type “pointer to cv T”, where T and the array element type are not similar»Добавлено через 13 минут Чем "ре-интерпретация" не легальна?
0
|
||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 04.01.2020, 23:37 | ||||||
|
смысл не в том: "какие". смысл в том: "почему". UB - неопределенное поведение. в данном случае поведение - определенное. и корректное, поскольку приводит к нужному результату именно так, как оно изначально и задумывалось. учитывая, что в данной ситуации поведение совершенно точно определенно, и полностью совпадает с ожидаемым? ты не заметил что обозначил ситуацию как UB, невзирая на то, что поведение полностью определенно? только потому что так написанно в твоей книжке. безотносительно к причинам настоящих UB, о которых в этих твоих книжках скромно умалчивается? на красный свет нельзя идти потому, что можно попасть в аварию? или просто потому что так написанно в книге?
0
|
||||||
| 04.01.2020, 23:37 | |
|
Помогаю со студенческими работами здесь
20
Восходящее и нисходящее преобразование (Upcasting and Downcasting) Неявное восходящее преобразование при защищенном/закрытом наследовании Как сложить объект базового класса с объектом производного(наследуемого класса)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|