Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разработка классов, создание конструкторов и деструкторов https://www.cyberforum.ru/ cpp-beginners/ thread843107.html
*Постpоить класс для pаботы с рациональными дробями. Класс должен включать следующие поля: числитель, знаменатель, комментарий. *Класс должен обеспечивать пpостейшие методы для pаботы с полями...
C++ не могу скомпилировать программу(
не могу никак додуматься как скомпилировать, ругается что init() не определен... #include <iostream.h> #include <stdlib.h> struct Node { int inf; Node *next; };
C++ Не могу разобраться с NetBeans C++ Ребят не подскажите в чём дело. Сначала эту "прогу" на C написал было всё нормально. А вот на C++ не хочет с этими библиотеками. NetBeans не так настроен или что? (... https://www.cyberforum.ru/ cpp-beginners/ thread843096.html C++ Общий корень узлов Имеется странноватая коряга, в которой не предки содержат указатели на потомки, а наоборот. Метод вызван для некоторого узла дерева и принял в параметр Right ссылку на другой узел. Требуется найти... https://www.cyberforum.ru/ cpp-beginners/ thread843078.html
Выделение памяти C++
Всем доброго времени суток! Пытаюсь сделать связанный список на 100кк элементов, но не выделив памяти и под половину, программа жрёт 4 гига оперативы, и как вы поняли намерена сожрать больше....
C++ закрытое наследование Объясните, плиз. Заранее спасибо В классе Base поле X находится в части private, производный класс объявлен так: class Derived: private Base{…}. Какие из следующих функций могут обращаться к... https://www.cyberforum.ru/ cpp-beginners/ thread843072.html
C++ Наибольшее нечетное Собственно задание: Ввести с клавиатуры целое число, которое будет являться количеством целых чисел во вводимой последовательности. Определить максимальное среди нечетных элементов... https://www.cyberforum.ru/ cpp-beginners/ thread843070.html Замена слов в строках C++
Доброго времени суток! Помогите, пожалуйста, вот с таким заданием: нужно в тексте заменить все слова "and" на "и". Например, есть строка: "Миша and Ваня играли в футбол". Должно получиться: "Миша и...
C++ undefined reference to `A::a' //=====================================================================================================================================================================================================... https://www.cyberforum.ru/ cpp-beginners/ thread843062.html C++ Наследование и перегрузка операторов https://www.cyberforum.ru/ cpp-beginners/ thread843057.html
Помогите, пожалуйста! Ткните носом в ошибки.. не судите строго - первая прога в С++, как и в объектно-ориент программировании: Ludzi.h #ifndef KLS #define KLS #include <iostream>...
C++ некоретно изменяет буквы
подскажите пожалуйста, вот в моем коде есть базовый клас в котором есть метод изменения регистра символа, я проверял он работает хорошо как надо из маленькой буквы делает большую и тд, вопщем меняет...
C++ Метод получения значения текущего элемента из списка https://www.cyberforum.ru/ cpp-beginners/ thread843055.html
Есть класс список. Надо написать метод получения значения текущего элемента из списка. Как это сделать я не знаю( Вот класс #pragma once struct node { double val; node *next;
16 / 16 / 1
Регистрация: 13.10.2012
Сообщений: 454
0

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

20.04.2013, 07:25. Показов 657. Ответов 8
Метки (Все метки)

Хотя и делал по образцу, но почему то лезет ошибка записи за пределы динамического массива, хотя и переменные копируются верно (отладчик вижлы подтвердил). конструктор наследованного класса даже не ковырял, т.к. ошибка таже
мэин
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include "cd.h"
void Bravo (const Cd & disk);
int main () {
    Cd c1 ("Beatles", "Capitol", 14, 35.5);
    Classic c2 = Classic ("Piano sonata in B flat, Fantasia in C", "Alfred Brendel", "Phillips", 2, 57.17);
    Cd *pcd = &c1;
    using std::cout;
    Cd ad;
    ad = c1;
    cout << "Using object directly:\n";
    c1.Report ();
    cout << '\n';
    c2.Report ();
    cout << "\nUsing type cd * pointer to objects:\n";
    pcd->Report ();
    pcd = &c2;
    pcd->Report ();
    cout << "\nCalling a function with a Cd reference argument:\n";
    Bravo (c1);
    Bravo (c2);
    cout << "\nTesting assignment: ";
    Classic copy;
    copy = c2;
    copy.Report ();
    std::cin.get ();
    return 0;
};
void Bravo (const Cd & disk) {
    disk.Report ();
};

хэдэр
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 class Cd {
 private:
     char * performers;
     char * label;
     int length;
     int selections;
     double playtime;
 public:
     Cd (char * s1, char * s2, int n, double x);
     Cd (const Cd & d);
     Cd ();
     virtual ~Cd ();
     virtual void Report () const;
     Cd & operator = (const Cd  & d);
 };
 class Classic : public Cd {
 private:
     char * important;
 public:
     Classic ();
     Classic (char * im, char * s1, char * s2, int n, double x);
     Classic (char * im, Cd & temp);
     Classic (const Classic & temp);
     virtual void Report () const;
     Classic & operator = (const Classic & temp);
     virtual ~Classic ();
 };

методы
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include "cd.h"
#include <iostream>
#include <cstring>
Cd::Cd () {
    performers = new char [8];
    strcpy (performers, "perfomer");
    label = new char [4];
    strcpy (label, "song");
    selections = 0;
    playtime = 0;
};
Cd::Cd (char  * s1, char * s2, int n, double x) {
    performers = new char [strlen (s1) + 1];
    strcpy (performers, s1);
    label = new char [strlen (s2) + 1];
    strcpy (label, s2);
    selections = n;
    playtime = x;
};
Cd::Cd (const Cd & d) {
    performers = new char [strlen (d.performers) + 1];
    strcpy (performers, d.performers);
    label = new char [strlen (d.label) + 1];
    strcpy (label, d.label);
    selections = d.selections;
    playtime = d.playtime;
};
void Cd::Report () const {
    using std::cout;
    cout << *performers << ", " << *label << ", " << selections << ", " << playtime;
};
Cd::~Cd () {
    delete [] performers;
    delete [] label;
};
Cd & Cd::operator= (const Cd & d) {
    if (this == &d) return *this;
    delete [] performers;
    delete [] label;
    length = strlen (d.performers);
    performers = new char [length + 1];
    strcpy (performers, d.performers);
    length = strlen (d.label);
    label = new char [length + 1];
    strcpy (label, d.label);
    selections = d.selections;
    playtime = d.playtime;
    return *this;
};
Classic::Classic () : Cd () {
    important = new char [14];
    strcpy (important, "Important song");
};
Classic::Classic (char * im, char * s1, char * s2, int n, double x) : Cd (s1, s2, n, x) {
    important = new char [strlen (im) + 1];
    strcpy (important, im);
};
Classic::Classic (char * im, Cd & temp) : Cd (temp) {
    important = new char [strlen (im) + 1];
    strcpy (important, im);
};
Classic::Classic (const Classic & temp) : Cd (temp) {
    important = new char [strlen (temp.important) + 1];
    strcpy (important, temp.important);
};
Classic & Classic::operator = (const Classic & temp) {
    if (this == &temp) return *this;
    delete [] important;
    Cd::operator= (temp);
    important = new char [strlen (temp.important) + 1];
    strcpy (important, temp.important);
    return *this;
};
Classic::~Classic () {
    delete [] important;
};
void Classic::Report () const {
    Cd::Report ();
    std::cout << ", " << important;
};

другая версия с той же ошибкой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Cd & Cd::operator= (const Cd & d) {
    if (this == &d) return *this;
    delete [] performers;
    delete [] label;
    length = strlen (d.performers);
    performers = new char [length];
    strncpy (performers, d.performers,length);
    performers [length] = '\0';
    length = strlen (d.label);
    label = new char [length];
    strncpy (label, d.label, length);
    label [length] = '\0';
    selections = d.selections;
    playtime = d.playtime;
    return *this;
};


Вернуться к обсуждению:
Ошибка в конструкторе копирования класса C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2013, 07:25
Готовые ответы и решения:

Исправить ошибку в конструкторе копирования пользовательского класса Sort
Здравствуйте. Такая вот проблема. Обычный конструктор работает без ошибок и подчеркиваний: ...

Ошибка в конструкторе копирования
Здравствуйте. Есть один класс для работы с многочленами, который хранит элементы многочлена в...

Ошибка в конструкторе копирования
Всем привет, не могу понять проблему, у меня есть структура: struct WindowRender : public...

Ошибка в конструкторе копирования C++
Помогите, пожалуйста создать конструктор копирования, который будет копировать элемент и добавлять...

8
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2013, 07:25
Помогаю со студенческими работами здесь

Ошибка при работе с объектом класса в конструкторе другого класса
Имеется данный код: https://github.com/ubelian/glgame/tree/master/glgame В файле Food.cpp в...

В конструкторе копирования отцовского (_str) класса возникает некое "необработанное исключение"
Добрый день. Делаю курсовик в универе, иерархия классов и работа с ними. В конструкторе...

Ошибка в конструкторе класса
Всем доброго времени суток! Есть простая задачка: Написать реализацию класса и короткую...

Ошибка в объявлении класса (в конструкторе)
Я не могу разобраться с классами и конструкторами, в строчке Progect();// {numb=0; sum=0;...

Ошибка в конструкторе класса динамических строк
Необходимо создать класс динамических строк с конструктором копирования, оператором присваивания,...

Инициализация шаблонного класса(В конструкторе класса после двоеточия вновь имя класса)
Всем доброго времени суток! Пытаюсь разобраться как работает приведенный мной код. Конкретно,...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru