![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 26.02.2015
Сообщений: 24
|
![]()
Здравствуйте! Только начал разбираться в структурах и классах, прошу подсказать.
Есть задача: "..Карточка иностранного слова представляет собой структуру, содержащую иностранное слово и его перевод. Для моделирования электронного словаря иностранных слов реализовать класс Dictionary. Данный класс имеет поле-название словаря и содержит массив структур WordCard, представляющих собой карточки иностранного слова... " Вопрос: правильно ли реализовал класс и как работать с полями структуры? Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Если вы хотите извне обращаться, то переместите описание структуры в public или вообще просто перед классом поместите.
"Извне" значит так: Код:
Но скорее всего вам надо сделать массив private и сделать public функции для работы с ним. Код:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 24.03.2016 в 21:28. |
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 26.02.2015
Сообщений: 24
|
![]() Цитата:
Последний раз редактировалось NEymexa:c; 28.03.2016 в 21:49. |
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Если просто фиксированный массив как тут, то никак, у вас всегда будет массив с 200 экземплярами структуры.
Например сделайте переменную (count) для хранения кол-ва "добавленных"/используемых элементов (0-200). При добавлении записывайте данные в элемент с номером count и увеличивайте ее. При удалении сдвигайте элементы влево начиная с удаляемого и уменьшайте count. А так есть std::vector если не обязательно такой массив.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#5 | |
Пользователь
Регистрация: 26.02.2015
Сообщений: 24
|
![]() Цитата:
То есть создать динамический массив объектов класса ? Код:
![]() Последний раз редактировалось NEymexa:c; 30.03.2016 в 21:37. |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Зависит от того как это делать.
В этой строчке создается один словарь, а не массив. Вообще лучше избегать использования new (выделение памяти в куче/heap) без необходимости, ибо эту память надо освобождать с помощью delete (или smart pointer и т.п.), а вместо этого создавать объекты просто в стеке. Например так: Код:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]() Цитата:
Код:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
От задачи зависит что лучше. Зачем связный список если например нужно обращаться по индексу? (типа взять второй и пятнадцатый словарь)
И автор сейчас вообще не про WordCard спрашивал. Про который в задании просили "массив структур".
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]() Цитата:
Для понимания сути вещей, ему нужно сначала научится работать со связными списками. Если нужно несколько справочников, создаём две структуры. Одна, содержит всего два указателя и имя справочника. Один на саму себя. Другой, на справочник (Library, Dictionary и Name). Тогда, для создания группы справочников, сначала добавляем к Library один элемент и присваиваем ему имя. Затем создаём элемент списка слов, ссылку на него и записываем в Dictionary. К тому, же такую структуру, легко сохранять в XML файле т.к. она имеет иерархическую структуру.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 31.03.2016 в 02:03. |
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Дык с чего вы взяли, что тут именно связный список нужен, а не массив?
Можно ж и свой массив с изменяемым размером (ну как std::vector: size, capacity и т.п.) навелосипедить, тоже не менее полезно.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Класс в классе | RAFA91 | Общие вопросы C/C++ | 4 | 25.05.2015 12:24 |
Структура DateTime, битовая структура | prepare2die | Помощь студентам | 1 | 10.03.2015 13:32 |
Структура в классе | ArmanPrestige | Общие вопросы C/C++ | 4 | 24.06.2012 20:24 |
Класс в классе | Alex11223 | Общие вопросы C/C++ | 2 | 13.04.2011 23:10 |
Ошибка в классе | Superlotles | Общие вопросы C/C++ | 2 | 09.07.2010 00:05 |