Форум программистов, компьютерный форум, киберфорум
Наши страницы

Ошибка в конструкторе копирования - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не понятно шо за ошибка? http://www.cyberforum.ru/cpp-beginners/thread854680.html
Здорова! Пытаюсь создать список вот код: #include <iostream> using std::cout; using std::endl; using std::cin; template<class T> class List//optimal6nui {
C++ Вычислить среднее геометрическое. ФУНКЦИИ Вычислить среднее геометрическое для каждого элемента одномерного массива по следующему правилу : (см. картинку) Использовать функцию вычисления среднего геометрического одномерного массива. http://www.cyberforum.ru/cpp-beginners/thread854670.html
Предел макисально целого числа C++
Подскажите пожалуйста, В СРР есть предел макисально целого числа он записан в long long int, есть ли какая-то возможность обойти этот предел. P.S. Если не понятно вышенаписанное, я имел ввиду, что...
Поиск остовного леса методом Соллина C++
Доброго времени суток. Передо мной встала задача найти остовной лес минимальной стоимости методом Соллина. Интернет предложил единственный вариант реализации данного алгоритма (приведён ниже). Сразу...
C++ Итерационные и рекурсивные алгоритмы http://www.cyberforum.ru/cpp-beginners/thread854644.html
Вычислить на ЭВМ значение суммы членов бесконечного ряда с заданной точностью и значение суммы, определяемое пределом суммы ряда ( по формуле). Напечатать значения сумм и число циклов ряда, вошедших...
C++ Чистая виртуальная функция Скажите, может ли чистая виртуальная функция иметь тело? В книге написано что может, но не написано как. Пытался сам определить по-разному - не получилось. В интернете нашел пару примеров с телами,... подробнее

Показать сообщение отдельно
abit
271 / 270 / 35
Регистрация: 03.02.2013
Сообщений: 756
03.05.2013, 16:41
oO
C++
1
2
3
4
5
6
7
8
9
10
Pol(Pol &e)  // конструктор копирования
   {
       Pol *z=new Pol();
       Element *i=e.first;  // указатель на первый элемент входного многочлена
       while(i)
       {
           cout << i->getData();
           Add(i->getData());  // добавить все элементы в многочлен
           i=i->next;
       }
копайте в теорию c начала, мой мозг отказался это вообще понимать

Pol *z=new Pol();
тут вы выделяете память для Pol, в адресе z, в конструкторе этот адрес не используете, по выходу из конструктора z как указатель помирает, память остаётся, непонятно зачем

далее

C++
1
Add(i->getData());
вообще шикарно, вы хотели прибавить к адресу функции getData() единицу что ли? дело в том, что как выполнится i->getData() она вернёт вам число в поле *(i->data) и никакой связи с полем иметь не будет

если эти измышления описать в более-менее логичном формате должно быть что-то типа такого
C++
1
2
3
4
5
6
7
8
9
10
11
Pol(Pol &e)
   {
       this->first = new Element;
       this->last = new Element;
       Element *i = this->first;
       while (i)
       {
             i->setData(i->getData()+1);
             i=i->next;
       }
   }
но опять же тут надо вникать в логику программы, чтобы знать что и куда копировать, а я всё больше вникаю в ваш конструктор копирования

Что самое странное, метод для добавления новых элементов многочлена работает нормально
ничего странного, там не вызывается конструктор копирования, вызывается впервые он у вас при передачи параметра b в функцию test, чтобы создать локальную копию Pol для внутренностей функции test
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru