|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.11.2017, 21:10 | #1 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Динамический массив объектов класса, C++
Здравствуйте.
Мне тут пришлось покодить на плюсах (задача такая), и нужно организовать динамический массив объектов собственного класса. Я забыл, как я это делал раньше (там был какой-то серьёзный колхозинг). Пришёл сюда. Можете напомнить пожалуйста ? Класс, объекты которого нужно завернуть в массив - игроки в моей игрульке, их может быть от 1 до 4. Можно использовать и статический массив, но "так не интересно", к тому же колода карт (36 ИЛИ 54) диктует уже именно эти условия. Как организовать ?
Подпись ? Не, не слышал ...
|
23.11.2017, 22:01 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
std::vector<MyClass>, std::vector<std::shared_ptr<MyClass >>, ...
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
23.11.2017, 22:51 | #3 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Разобрался со звёздочками ...
Код:
Сейчас у меня другая проблема назревает: логика предполагает, что объекты должны знать друг о друге, а если класс объявлен ниже, чем то место, в котором его пытаешься использовать - начинаются проблемы с компиляцией. Как решать ? Помню в делфи был такой прикол с функциями, просто заголовок функции нужно было разместить в блоке объявления всех методов и полей класса.
Подпись ? Не, не слышал ...
|
23.11.2017, 23:00 | #4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
И зачем спрашивали если продолжаете использовать свой
?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
24.11.2017, 01:04 | #5 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Затем, что я забыл, как меня учили.
Вспомнил. Сейчас другая проблема ...
Подпись ? Не, не слышал ...
|
24.11.2017, 01:42 | #6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
гугл - forward declaration c++
|
24.11.2017, 07:13 | #7 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Я столкнулся с двумя интересными (для меня) ошибками ...
1 - C2227, описание по ссылке мало меня касается, ибо у меня классы, а там структура, и у меня нет никаких наружных объявлений, через которые я пытаюсь пролезть к тем функциям, которых там заведомо нет. 2 - C2027, описание ещё тупее - сверху деклалирован класс C, нужная функция находится в классе D. Понятно, что если я за нужной функцией (которая в классе D) пойду в класс C - то у меня буду проблемы. Но у меня класс деклалирован под тем же именем, которое указано непосредственно перед телом класса. Погуглил - везде советуют сделать декларацию классов. Сделал, толку никакого. Код:
Я долго ковыряю это дело; без верхней декларации любые упоминания самого типа (Game_Player) выше описания класса - компилятор уходил в осадок. Добавил эту делкарацию - стало всё нормально. Сейчас смотрю - обижается на попытки обратиться к экземпляру класса (как по методам, так и по полям). Ошибки использование неопределённого типа "Game_Core::Game_Player" - как мне помочь ему определить этот тип, при том, что он сам же пишет, что тип <ТАКОЙ ТО> не определён. выражение слева от "-> чего нибудь" должно указывать на тип класса, структуры, или объединения либо на универсальный тип - что сделать, что бы указывало ?
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 24.11.2017 в 07:43. |
24.11.2017, 07:33 | #8 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
1. это не С++, а С++ CLI
2. Game_Player и GamePlayer это разные вещи 3. List<GamePlayer^> - это не массив и работать с ним надо соответственно |
24.11.2017, 07:45 | #9 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Это я здесь ошибку допустил. В коде правильно, сюда же перекатывал и очищал для всеобщей читаемости, исправил.
На CLI я был вынужден перекатится из-за некоторых требований. До введения картинок (Image ^) был чистый C++, со ссылочными (*) массивами. UPD: только что перепроверил, переделал на players=gcnew array<Game_Player^>(players_count); То есть - обычный массив. Ничего не поменялось. В прочем - и не могло ничего поменяться, просто потому что при объявлении обычного дескриптора (Game_Player ^ololo=gcnew Game_Player();) при попытке обратиться туда за полями или методами - ситуация не меняется. Класс описан сверху заголовком. Тело класса находится в самом низу кода. Что тут не так ? Если надо - могу скинуть весь файл (игровая логика отдельным модулем).
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 24.11.2017 в 07:58. |
24.11.2017, 10:17 | #10 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Я избавился от ошибки ... (но не решил её)
Так как декларация всех классов вначале ничего не давала - я пересортировал порядок классов "снизу-вверх" в порядке использования-вызова "сверху-вниз" в самих функциях (эт наверное сложна). И у меня появилось две декларации. Дальше философия ... Я таким занимался на делфях, но на шарпе таких проблем не было. На плюсах оказалось по строже (но я и не удивлён особо). Единственная причина моих издевательств над собой же (и в каком то смысле над вами) - это желание сделать так, что бы было как можно меньше дополнительных деклараций =). С моей предыдущей последовательностью вроде бы можно было сделать всего одну декларацию. Но причина ошибки мне неизвестна, так как не помогала даже декларация всех классов.
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 24.11.2017 в 10:54. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Шаблонный массив объектов класса - C++ | Андрей Иванов | Помощь студентам | 2 | 01.10.2015 17:07 |
Массив объектов класса. | zipwind | Общие вопросы C/C++ | 8 | 01.05.2011 20:56 |
динамический массив объектов класса. С++ | Шиншилка | Помощь студентам | 8 | 25.04.2011 17:58 |
Динамический массив класса Array | emnm | Общие вопросы C/C++ | 0 | 21.12.2010 22:04 |
2-мерный динамический массив экземпляров класса. С++ | Парсифаль | Общие вопросы C/C++ | 1 | 29.12.2009 14:35 |