![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Несчастный студент
Пользователь
Регистрация: 31.03.2013
Сообщений: 52
|
![]()
Задача такая:
Составить описание класса для работы со вектором строк (строки произвольной длины), с операциями включения в вектор, удаления из вектора элемента с заданным значением, удаления всего вектора или конца вектора, начиная с заданного элемента. Класс Vector я описала, но до него мне необходимо описать класс String, так как нельзя пользоваться соответствующими библиотеками. Помогите, пожалуйста. Вот описание класса Vector, Код:
Последний раз редактировалось Stilet; 31.03.2013 в 16:12. |
![]() |
![]() |
![]() |
#2 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]()
чего вы хотите от String?
Кстати, пример ужасен, как вы собираетесь его использовать? |
![]() |
![]() |
![]() |
#3 |
Несчастный студент
Пользователь
Регистрация: 31.03.2013
Сообщений: 52
|
![]()
Говорят, что в идеале используются библиотеки string и vector, но нам запретили этим пользоваться. Вот посмотрите, я набросала кое-что, можете ответить, что должно быть на месте "//?" ? Я перегрузила операции в Stroka, там нужно еще что-нибудь?
Код:
Последний раз редактировалось Bitter_Schokolade; 31.03.2013 в 18:43. Причина: доработка |
![]() |
![]() |
![]() |
#4 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]()
оператор присваивания, наверное.
вот тут вызываеца: new_v [size-1] = s; вам же компилятор поди сообщает чего не хватает? |
![]() |
![]() |
![]() |
#5 |
Несчастный студент
Пользователь
Регистрация: 31.03.2013
Сообщений: 52
|
![]()
Компилятор при таком коде не ругается:
Код:
|
![]() |
![]() |
![]() |
#6 | ||
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]() Цитата:
попробуйте использовать свою строку и вектор - если будет работать - радуйтесь, компилятор сообщит об ошибках - тоже, ведь нашли ответ на "там нужно еще что-нибудь?" Цитата:
Код:
Пока что мне не понятно почему в функции delall (которая, судя по названию, должна лишь все удалить выделяется память. И форматирование кода очень не нравится. вместо вопросительных знаков в конструкторе по умолчанию: Код:
Последний раз редактировалось rrrFer; 31.03.2013 в 21:11. |
||
![]() |
![]() |
![]() |
#7 |
Несчастный студент
Пользователь
Регистрация: 31.03.2013
Сообщений: 52
|
![]()
Премного благодарна!
Эти функции нужны, чтобы решить поставленную задачу (добавить элемент, удалить элемент по значению, удалить элементы,начиная со значения, удалить все). Я просто не знаю, вдруг еще что-то надо, а я еще main() не заполняла. функции вызывать надо. А у меня в классах ввод-вывод строк не заявлен нигде. Это нормально? |
![]() |
![]() |
![]() |
#8 | ||
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]() Цитата:
1) В классе Stroka не объявлены конструктор копии и оператор присваивания. Не в меру инициативный компилятор, к сожалению, в таком случае создаст их за Вас и это будет простое побитовое копирование. В частности, конструктор копии задействуется при передаче аргумента по значению в operator==. Копия будет создана, а на выходе из функции вызовется деструктор, а в нём delete[]... короче, оригинал будет безнадёжно испорчен. Во-первых, объявите конструктор копии и оператор присваивания; во-вторых, желательно бы передавать в качестве аргумента не объект типа Stroka, а константную ссылку на него, если это возможно (const Stroka&). 2) В методе Vector :: del Вы выделяете массив new_v размера X, а потом обращаетесь к new_v[X]. Поздравляю, Вы только что уронили программу. 3) Там же Вы в цикле вызываете delete[] v. Да и сам цикл получается почти бесконечный... 4) Цитата:
|
||
![]() |
![]() |
![]() |
#9 |
Несчастный студент
Пользователь
Регистрация: 31.03.2013
Сообщений: 52
|
![]()
А можете объяснить, как это делать?
[QUOTE=Abstraction;1207078]Во-первых, объявите конструктор копии и оператор присваивания; во-вторых, желательно бы передавать в качестве аргумента не объект типа Stroka, а константную ссылку на него, если это возможно (const Stroka&).[/QUOTE=Abstraction;1207078] И как исправить 2 и 3 ошибки? |
![]() |
![]() |
![]() |
#10 | ||
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]() Цитата:
Код:
Цитата:
|
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Собственный класс строк | Amy_Lee | Общие вопросы C/C++ | 0 | 08.04.2012 17:27 |
свой собственный класс MediaPlayer'a | nick17 | Помощь студентам | 2 | 26.11.2010 13:54 |
Delphi7,как создать собственный класс ? | -ushёl- | Общие вопросы Delphi | 15 | 13.06.2010 01:02 |
Собственный класс диалогового окна на чистом WinApi в Delphi | Iber | Win Api | 19 | 01.12.2008 15:40 |
Рисование многоугольника (собственный класс) | MaTBeu | Общие вопросы C/C++ | 1 | 08.12.2007 14:53 |