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

Конструктор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывод строк фиксированной длины из входного потока http://www.cyberforum.ru/cpp-beginners/thread22021.html
Задача организовать цикл по входному потоку и вывести полученные getchar'ом символы в виде строк некоторой длины N. Допустим, если длина строки превышает N, тогда печатаем ее с переносом на следующую...
C++ Сформировать список, в котором хранится информация о заболеваниях сотрудников Сформировать список, в котором хранится информация о заболеваниях сотрудников: ФИО, год рождения, заболевание, продолжительность болезни. Определить сотрудников, которые перенесли одно и тоже... http://www.cyberforum.ru/cpp-beginners/thread21976.html
Решение системы уравнений компактным методом исключений C++
На С++ надо решить систему уравнений компактным методом исключений. Элементы матрицы- комплексные числа, введенные в символьной форме. Числа обязательно должны быть представлены структурой. Ввод...
C++ Необходимо создать функцию для обработки символьных рядов
Потрібно створити функцію для обробки символьних рядків. За зразок брати функцію WordIndex(s,n)(Призначення: визначення позиції початку в рядку s слова з номером n) обробки рядків мови C, але не...
C++ ввод-вывод текста http://www.cyberforum.ru/cpp-beginners/thread21933.html
как с помощью массива можно вводить и выводить текст в Си, если в тексте есть пробелы?
C++ Заменить в строках первое слово на другое задание такое: задан текст, содержащий произвольное кол-во строк, в которых отдельные слова могут разделяться одним или несколькими пробелами и знаками пунктуации(перенос слов не используется).... подробнее

Показать сообщение отдельно
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.01.2009, 19:23
Ammaximus, ошибка в том, что в классе ты работаешь с указателями, но ты не переопределил конструктор копирования.
Смотри, ты передаешь, например, в метод add объект vector по значению. При передаче по значению создается копия объекта, то есть, вызывается конструктор копирования. Но конструктора копирования у тебя нет, поэтому в функцию add и в остальные указатель на p не меняется, а по выходу из нее вызывается деструктор для vector, в котором delete [] p. То есть после выхода из метода add у тебя в объекте с массив твой уже удален. А после вызова mul в деструкторе он пытается удалить его еще раз. Отсюда и ошибка. Если ты уберешь mul, то ошибка все равно останется, так как, по завершению работы будут вызваться деструкторы объектов, а в объекте с уже нет твоего массива. И его повторное удаление снова вызовет ошибку.

Переопредели стандартный конструктор копирования для класса vector, чтобы можно было передавать по значению.

Добавлено через 25 минут 13 секунд
Вообщем, если особо не заморачиваться и сделать так, 'чтобы просто работало', то я бы вставил следующие методы:
C++
1
2
3
4
5
6
7
8
9
10
    int getCount() const
    {
        return this->number;
    }
 
    vector(const vector& vec)
    {
        p = new float[vec.getCount()];
        for(int i=0;i < vec.getCount();i++) p[i] = vec.get(i);
    }
Метод get, соответственно, тоже сделать константным.

P. S. кстати, условие задачи не смотрел. Только ошибку
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru