Форум программистов, компьютерный форум CyberForum.ru

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

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

Показать сообщение отдельно
Vourhey
Почетный модератор
6470 / 2245 / 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. кстати, условие задачи не смотрел. Только ошибку
 
Текущее время: 09:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru