![]() |
|
Модераторы: bsa |
![]()
|
|
| Macbeth |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Здравствуйте.
Задание: Описать класс, 3 объекта, используя разные конструкторы; объект №3 увеличить в раза(operator*), удвоением каждого символа("abc" ---> "aabbcc"); сложить(operator+) объекты № 3 и №2, затем присвоить(operator=) это объекту №1. Вот такой код сейчас. Выбивает ошибку, когда инициализирую объект L3. "illegal, left operand has type Row * " "illegal, right operand has type Row* " Очень прошу помочь исправить.
|
|||
|
||||
| smalcom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 494 Регистрация: 16.10.2004 Где: Dnepr Репутация: нет Всего: 7 |
Товарищи у вас на всех одна лаба чтоли? Хоть бы именна переменных поменяли.
Где выбивает догадаться надо? -------------------- What DA F...??? |
|||
|
||||
| Macbeth |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Ошибся. Когда иниц. L1. Вот здесь(4 строка в main):
Немного разобрался, здесь должно быть что-то вроде: Row L1 = (*L3)*(*L3) + L2; * - между объектами L3 - произведение, остальное указатели(не знаю как по другому описать) |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
L2 у вас тоже указатель, тоже надо разыменовывать....
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
В коде куча ошибок - в строках 38, 54, 55, 62, 73
Операторы (в строках 18-20) заданны не правильно (они должны принимать const Row& и возвращать Row) Оператор * вообще задан неправильно - он должен умножать на int, а не на Row Это сообщение отредактировал(а) xvr - 1.4.2010, 15:10 |
|||
|
||||
| Macbeth |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Можно поподробнее о ошибке в конструкторе копирования и операторе * ?
Заменил указатели ссылками, ошибки в размерах строчных массивов исправил.
При отладке в цикле где я удваиваю строку выбивает ошибку "Unhandled exception at 0x00412312". Что там не так? |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
ломал голову так и не понял что этот оператор должен был сделать. присваивание неициализированных (случайных) значений аналогичным. и в названии параметра s1, а работаете с s Это сообщение отредактировал(а) ИванМ - 1.4.2010, 16:50 |
|||
|
||||
| Macbeth |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Строку (объект1) нужно удвоить и склеить с объект2 (инициализируется конструктором копирования - присваивается изначальное значение объект1, т.е. "abc" .
Насчет параметра, Вы имеете ввиду сделать так
Это сообщение отредактировал(а) Macbeth - 1.4.2010, 17:03 |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
это все в одном операторе * или это такая задача вообще?
я имею ввиду, что надо писать просто s1, а не s, коли вы пишете так: (const String& s1) Это сообщение отредактировал(а) ИванМ - 1.4.2010, 17:41 |
|||
|
||||
| Macbeth |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
s3 = (s1*s1) + s2. Удвоение надо реализовать перегрузкой оператора * . Склеить перегрузкой оператора + .
Как же мне тогда инициализировать массив, для работы в цикле? (кстати, я забыл его скопировать сюда: t = s1.s) В s хранится строка. |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
||||
|
||||
| Macbeth |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
||||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
||||
|
||||
| Macbeth |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Я наверное чего-то не понимаю. Причем тут AnsiString? И вроде бы я из того же класса обращаюсь к s.
|
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
прошу прощения
я вас дезинформировал я думал String это не ваш класс а стандартный почему то думал что вы работаете внутри Row Добавлено @ 19:00 вот например, код набросал для утроения строки из 4 символов: ins - входной массив, outs-выходной
для удвоения просто заменить n с 3 на 2 Это сообщение отредактировал(а) ИванМ - 1.4.2010, 19:00 |
|||
|
||||
![]()
|
| Правила форума "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. |