![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 08.05.2010
Сообщений: 177
|
![]()
У меня не хочет работать конструктор копирования подскажите где ошибка
Код:
|
![]() |
![]() |
![]() |
#2 |
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
![]()
В вашем случае будет просто неявное присвоение полей одного класса другому.
А конструктор копирования, на то он и констуктор, что он вызывается в момент создания объекта (инициализации). Код:
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
![]()
Что значит "не работает" конструктор копирования?! И где вы его используете?
Со мной можно встретиться на www.clipper.borda.ru
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 08.05.2010
Сообщений: 177
|
![]()
Здесь кажется все в порядке, но боюсь неправильно написанный конструктор копирования. Использовал прежде динамическую память, ничего не работало, убрал и все заработало. Может вы подскажете в чем проблема я новичок в ООП
Код:
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
![]()
Я не вижу никаких проблем в вашем конструкторе копирования. Вы не указали, какие у вас возникли проблемы.
Со мной можно встретиться на www.clipper.borda.ru
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
![]()
for(int i = 0;Number_of_petals[i] != NULL;i++) - массивы в с и с++ не заканчиваются нулем. цикл будет крутиться пока в памяти не встретится ноль.
второй баг: в конструкторе копировния в Number_of_petals - 10 обьектов, хотя в том объекте, который пришел в конструктор их может быть меньше => выход за пределы массивов. третий баг: не все мебмеры класса скопированны из объекта, переданного в конструктор копирования. Совет: используйте вектора. в этом случае вам не надо будет вручную выделять и удалять память под объекты. все сделается за вас причем конструктор копирования даже не придется писать. то, что сгенерится компилятором вам вполне подойдет. мебмеры будут выглядеть примерно так: private: std::vector<int> Number_of_petals; int total; int position; protected: std::vector<std::string> color; std::vector<std::string> month; public: std::vector<std::string> title; не совсем понятно, массивы ли вам нужны? если все таки массивы - то подумайте об обьединении мемберов в структуру и храните уже массив этих структур в весторе. Последний раз редактировалось _Ч_; 26.10.2011 в 23:14. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
![]()
да и вообще класс цветка у вас на самом деле это массив цветков. это нужно выразить по правильному, а не так извращенно. Вторая версия кода без массивов - более правильный вариант. если вам нужны массивы цветков, то и работайте с массивом обьектов типа Flower.
с векторами по прежнему будет все просто: std::vector<Flower> array1; // заполнение массива. std::vector<Flower> array2 = array1; |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
конструктор копирования | revaldo666 | Общие вопросы C/C++ | 10 | 21.06.2011 22:42 |
Конструктор копирования | Сtrl | Общие вопросы C/C++ | 6 | 31.03.2011 10:18 |
Конструктор копирования | DartDayring | Общие вопросы C/C++ | 4 | 16.11.2010 17:46 |
Конструктор копирования. | 123er4 | Общие вопросы C/C++ | 4 | 13.06.2010 01:27 |