| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > Перегрузка оператора + для вектора |
| Автор: Foxxx 12.5.2008, 15:16 | ||
| У меня есть класс Динамический Массив (Вектор)! Надо реализовать перегрузку оператора + чтобы возможно было такое C = A + B; Я пробовал, но у меня какието ошибки (невозможно прочесть память)! Помогите пожалуйста реализовать это! Вот исходник:
|
| Автор: Rodman 12.5.2008, 16:04 | ||
|
| Автор: anatox91 12.5.2008, 16:11 | ||||
| 1)давай сюда дословно ошибки компилятора 2)бегло просмотрев заметил пока что вот эту ошибку:
надо:
|
| Автор: Foxxx 12.5.2008, 16:14 | ||||||
| Блин! Забыл написать язык=) С++ Вот текст ошибки: Invalid Allocation Size: 4294967295 bytes Добавлено через 2 минуты и 58 секунд
В описании класса помоему не обязательно писать имя параметра, т.е. CVector(int) - это должно быть верно! |
| Автор: Sartorius 12.5.2008, 16:20 |
| Foxxx, советую имя параметра в конструкторе сменить |
| Автор: Foxxx 12.5.2008, 17:12 |
| Sartorius, в каком именно конструкторе? НЕ понимаю тебя, объясни подробнее ПЛЗ! |
| Автор: Foxxx 12.5.2008, 17:28 |
| |
| Автор: creatorcode 12.5.2008, 17:42 | ||||
| 1. Раскомментируй код перегруженного присваивания. 2. Измени конструктор копирования
3. Измени код перегруженного сложения
|
| Автор: Rififi 12.5.2008, 17:50 |
| Foxxx, в конструкторе копии в этой строчке V = new int[Size]; весело выделяется память случайного размера в пределах -2gb .. 2Gb мусор в переменной Size заменяется на правильное значение только в конце выполнения функции. |
| Автор: Foxxx 12.5.2008, 17:54 |
| creatorcode, спасибо тебе огромное! Работает!!!! Ток объясни плз, в чем именно главная проблема была?=) |
| Автор: creatorcode 12.5.2008, 18:02 |
У тебя было 2 основных проблемы: первая заключается в том, что дефолтное присваивание работает только для примитивных типов, для любых динамических объектов необходимо написать свою версию оператора присваивания (у тебя она была написана, только почему-то закомментирована); вторую указал Rififi. Ну и третья проблема - логическая: в твоем коде в операторе сложения собственно сложения не происходит, а происходит присваивание одного вектора другому. |
| Автор: Foxxx 12.5.2008, 18:08 |
| Ясно! Спасибо огромное тебе еще раз!!! |