![]() |
|
Модераторы: bsa |
![]()
|
|
| Toyamatokanava |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.10.2012 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Задание звучит так, постройте класс, представляющий динамическую очередь из элементов типа Cat. Я так понял, что нужно поставить в очередь строки, но поставить в очередь получилось только символы. Подскажите пожалуйста мою ошибку, так как я новичок.
Это сообщение отредактировал(а) Toyamatokanava - 22.9.2015, 12:37 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
| rudolfninja |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
Сначала вам надо определить тип Cat. В очереди вместо
делать Cat* cats; - это будет указатель на массив котов. В конструкторе вам надо как-то выделить память под нужное количество элемнтов, я так полагаю, это количество хранится в перемнной size. То есть, в конструкторе делаете:
Для нормального добавления элементов у вас в классе должен быть текущий (не максимальный) размер массива. Вот и все. У вас получаются символы, а не строки, потому что путем
Вы выделяете память для обычной строки, в которой может храниться size - 1 элементов.
возвращает вам всего лишь один символ из этой строки. А тут
вы это все еще зачем-то приводите к типу char, то есть, к одному символу. |
||||||||||
|
|||||||||||
| Toyamatokanava |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.10.2012 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Как сделать так, чтобы возвращался массив символов? Подскажите пожалуйста. |
||||||
|
|||||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
реализацию методов делай сам. NB: у класса Cat нужно реализовать конструктор по умолчанию, конструктор копирования и оператор копирования. Это сообщение отредактировал(а) math64 - 22.9.2015, 14:50 |
|||
|
||||
| rudolfninja |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
Делать двумерный массив символов =) Или использовать массив из std::string. Рекомендую вам второй вариант. Объявление будет таким:
Далее в конструкторе выделяете память для нужного количества элементов:
тогда qput будет таким:
А qget:
|
||||||||||
|
|||||||||||
| Toyamatokanava |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.10.2012 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Все равно не получается через строку.(
|
|||
|
||||
| rudolfninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
У вас int queue::qget(void) возвращает int.
Перепишите qget так:
|
|||
|
||||
| Toyamatokanava |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.10.2012 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Получилось вот так.
|
|||
|
||||
| rudolfninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
Раз уж у вас тип возвращаемого значения функции qget string, то не обязательно вызывать метод c_str() у возвращаемой строки. Можно просто написать return q[rloc++];
А работает хоть? =) |
|||
|
||||
| Toyamatokanava |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.10.2012 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Да, и правда можно без перевода в строку). Тут я не подумал.) Да, все работает), спасибо за помощь. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |