144 / 88 / 23
Регистрация: 31.08.2016
Сообщений: 775
|
|
1 | |
Идентификация типов объектов27.01.2023, 13:35. Показов 1162. Ответов 23
Метки нет (Все метки)
допустим в контейнере разные потомки одного предка, как их можно идентифицировать, что бы например удалить или копировать только определенного типа? блгдарствую
0
|
27.01.2023, 13:35 | |
Ответы с готовыми решениями:
23
как устроена динамическая идентификация типов Идентификация объектов Как отсортирвоать контейнер, если его тип определяется по ходу выполнения программы? (динамическая идентификация типов) Вывод объектов различных типов |
3249 / 1470 / 468
Регистрация: 01.06.2021
Сообщений: 4,965
|
||||||
27.01.2023, 13:49 | 2 | |||||
qppq, может typeid(...).name() ?
Добавлено через 3 минуты Кстати, в инете есть такой шаблон:
0
|
27.01.2023, 15:56 | 3 | |||||
qppq, по-хорошему, такого быть не должно.
Строится общий интерфейс максимально абстрактный и ничего не говорящий о типе потомка. например
1
|
Комп_Оратор)
|
|
27.01.2023, 16:19 | 4 |
Сегодня, такого ещё нет. Могут быть только указатели на базовый класс. Если вам, действительно нужно определять динамический тип используйте RTTI Такой ход мысли говорит о плохом дизайне, как правило, поскольку дорог с точки зрения скорости.
0
|
144 / 88 / 23
Регистрация: 31.08.2016
Сообщений: 775
|
||||||
27.01.2023, 18:51 [ТС] | 5 | |||||
не понял что это
0
|
27.01.2023, 19:04 | 6 |
пример того, где должна находиться логика заполнения контейнера.
Мы взяли какой-то производный класс и всю логику, определяющую нужно или не нужно вынесли в самого последнего в иерархии классов наследника. Если ты этого не понимаешь, возникает встречный вопрос - а какое условие копирования у тебя если не это? Напиши его и пусть оно будет внутри производного класса! Ты же просил удалить все объекты производного класса игрок, которых не убили, так? Ну вот я и копирую! А Объекты класса скажем "дом" будут удалены как и игроки, у которых здоровье на нуле!
1
|
144 / 88 / 23
Регистрация: 31.08.2016
Сообщений: 775
|
|
27.01.2023, 19:19 [ТС] | 7 |
не так ты(а может я) видимо понял
допустим, контейнер заполнен указателями трех производных типов T1 T2 T3 от базового Parent, не важно в каком порядке, нужно в другой контейнер скопировать указатели только одного типа (например Т2) из всех существующих в первом
0
|
Вездепух
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,052
|
|
27.01.2023, 19:24 | 8 |
При чем здесь
name() ? Просто typeid() решает эту задачу, если решать ее буквальной проверкой типа.
0
|
144 / 88 / 23
Регистрация: 31.08.2016
Сообщений: 775
|
|
27.01.2023, 19:46 [ТС] | 9 |
0
|
27.01.2023, 20:15 | 10 | |||||
ну окей, вот
0
|
Вездепух
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,052
|
||||||
27.01.2023, 20:17 | 11 | |||||
Автор опечатался. Он явно имел в виду все наоборот
0
|
144 / 88 / 23
Регистрация: 31.08.2016
Сообщений: 775
|
|
27.01.2023, 21:18 [ТС] | 12 |
0
|
18828 / 9831 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
|
|
27.01.2023, 21:21 | 13 |
qppq, Зачем сначала нужно было складывать все три объекта в один контейнер, а затем искать способы их разделить? Может быть сразу складывать в три разных контейнера?
0
|
144 / 88 / 23
Регистрация: 31.08.2016
Сообщений: 775
|
|
27.01.2023, 21:37 [ТС] | 14 |
2. Populate a container (e.g. vector or list) of objects of these types created in random manner with
random parameters. .... 4. Populate a second container that would contain only TypeA from the first container. мож чего я не так понял
0
|
18828 / 9831 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
|
|
27.01.2023, 21:44 | 15 |
Да нет, все верно.
Но наверное стоило бы сразу написать, что это какое-то задание.
0
|
144 / 88 / 23
Регистрация: 31.08.2016
Сообщений: 775
|
||||||
27.01.2023, 22:11 [ТС] | 16 | |||||
тест на знание азов), не тот азов
Добавлено через 22 минуты в общем без шаблонов как на роликах, вот как надо было, учитесь сынки) шутка
0
|
18828 / 9831 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
|
|
27.01.2023, 22:26 | 17 |
Ну здесь как минимум возможны варианты (перечислил ниже).
1) Это может быть контейнер, который только хранит "представление" первого контейнера, но не владеет объектами 2) Это может быть контейнер с копиями объектов заданного типа 3) Это может быть контейнер которому передали владение объектами заданного типа из первого контейнера В вашем варианте плохо то, что первый вариант от третьего не отличить совсем. Стоит подумать над этим.
0
|
1536 / 456 / 101
Регистрация: 17.05.2015
Сообщений: 1,424
|
||||||
27.01.2023, 23:05 | 18 | |||||
У вас может и нет) А в с++ возможно с незапамятных времен))
Идиома rImpl - почти как pImpl, только данные аллоцируются не в куче, а во внутреннем буфере. Обычный чаровый массив, немножечко выравнивания, и new placement. https://onlinegdb.com/pgtKIMLXH
1
|
Комп_Оратор)
|
|
28.01.2023, 00:56 | 19 |
Тут речь о другом. Вы говорите о хостинге на памяти. Тут нет ни чего о наследовании.
Сам подход известен. и достаточно сложен и с точки зрения типобезопасности и с точки зрения безопасности/нейтральности относительно исключений. eva2326, В стандартном С++ иерархии сохраняются как указатели на базовый класс. Тут студент страдает, а вы демонстрируете свою экстравагантную спину) qppq, тут ни где не сказано, что вам следует сначала создать суп, а потом вылавливать горошины. Можно создать суп и создавать параллельно варёный горошек. Когда вы обращаетесь конструктору (передаваемому оператору new) там есть информация о статическом типе, которая потом уходит на дно, где её нужно отлавливать при помощи RTTI (тут показали оба варианта - как), впоследствии. А лучше написать код который заселяет контейнеры так, чтобы потом не страдать. Впрочем, если цель задания познакомить вас с RTTI (болезненным образом), то тут ни куда не денешься. А в задании этого нет, если не считать тот факт, что требуют делать последовательно. Можно сделать и с RTTI, но указать, что задание заставляет решать ущербную задачу.
1
|
"C with Classes"
|
|
28.01.2023, 14:17 | 20 |
0
|
28.01.2023, 14:17 | |
28.01.2023, 14:17 | |
Помогаю со студенческими работами здесь
20
Хранение объектов разных типов в контейнере Вызов метода с одним именем у объектов разных типов Простое создание строки из объектов разных типов данных Как создать список для объектов разных типов данных Динамическое добавление объектов разных типов идентификация объектов Идентификация объектов на изображении Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |