|
3 / 3 / 0
Регистрация: 09.06.2010
Сообщений: 50
|
|
Как создать массив из объектов разных типов27.11.2012, 12:06. Показов 11701. Ответов 6
Метки нет (Все метки)
Привет, интересует такая проблема:
У меня есть абстрактный класс, от которого наследуются классы и потом создаются объекты этих классов. По сути эти классы содержать основное ядро абстрактного но с некоторыми добавлениями функций и переменных. Для чего это нужно? Есть движок игры, в нем все объекты являются отображаемыми на экране, с одним и тем же загрузчиком ресурсов и т. д.. Для того чтобы не создавать кучу объектов и обрабатывать их отдельно нужен массив. Но по сути наследуемый класс это уже новый тип, хоть и наследуемый. Поэтому нужен массив разнотипных данных. Что может мне помочь в такой ситуации? Ведь если я сделаю массив типа базового класса, то добавленные данные в потомках не войдут в объекты массива.
0
|
|
| 27.11.2012, 12:06 | |
|
Ответы с готовыми решениями:
6
Как можно создать массив разных объектов, заранее неизвестного размера? Как создать список для объектов разных типов данных
|
|
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
|
|
| 27.11.2012, 12:26 | |
|
почему не войдут? никто ведь не запрещает объявлять массив типа object, и заносить туда всё подряд от переменной типа int, до объекта типа Form1
0
|
|
|
3 / 3 / 0
Регистрация: 09.06.2010
Сообщений: 50
|
|
| 27.11.2012, 23:40 [ТС] | |
|
Ну через List <Object> я делал, но тогда я не могу получить доступ к методам и полям классов, ибо в типе Object нету определения таковых.
Т.е. если я имею базовый абстрактный класс, наследую от него еще 2 класса, добавляю в эти классы новые методы и переменные, а потом создаю list типа базового класса, то я смогу получить доступ к добавленным методам и полям? Окей, попробую.
0
|
|
|
Заблокирован
|
||||||
| 28.11.2012, 02:55 | ||||||
|
Если Вы используете List<object> то смысла в базовом классе вообще нет.
Для того чтобы правильно пользоваться абстрактными классами и вообще ООП, ознакомьтесь с понятием полиморфизма.
1
|
||||||
|
3 / 3 / 0
Регистрация: 09.06.2010
Сообщений: 50
|
|
| 28.11.2012, 23:04 [ТС] | |
|
Спасибо. Но базовый класс то как раз то очень нужен, иначе бы я не заморачивался с этим. Ваше решение мне не подходит, но спасибо за способ, пригодится. Просто вот интересно посмотреть на реализацию игр, в которых куча персонажей, и можно выбрать любого, но при этом у каждого свои особенности и возможности, а втом числе и их количество. Я сомниваюсь что в том же Теккене или League Of Legends они обрабатывают эти объекты последовательно if ' ом. Вот и пытаюсь найти решение данной проблемы.
0
|
|
|
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
|
|
| 29.11.2012, 12:38 | |
|
наверняка интерфейсы, а если нет то их подобие)
0
|
|
| 29.11.2012, 12:38 | |
|
Помогаю со студенческими работами здесь
7
Как правильно сериализовать и десериализовать коллекцию объектов разных типов?
Почему нельзя создать массив generic объектов с определёнными параметрами типов? Создать массив юнитов разных типов (тип задаеться случайным образом)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|