Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
servismas
0 / 0 / 1
Регистрация: 22.06.2015
Сообщений: 2
1

Два класса, два деструктора. После срабатывания второго первому нечего удалять

17.06.2018, 20:38. Просмотров 226. Ответов 2
Метки нет (Все метки)

Доброго времени суток.
Помогите, пожалуйста, понять где ошибка.
Компилируется, вылетает на деструкторе класса one.
Либо что-то не правильно создаю, либо не там удаляю...
С++
_________________________________________________________________________
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
#include <iostream>
using namespace std;
 
class one
{
    char *name = new char[10];
public:
    one()
    {
        cout << "Def Constr one\n";
        strcpy_s(name, 1, "");
    }
    one(const char *obj)
    {
        cout << "Reloaded Constr one\n";
        strcpy_s(name, strlen(obj) + 1, obj);
    }
    one(one &obj)
    {
        cout << "Copy Constr one\n";
        strcpy_s(name, strlen(obj.name) + 1, obj.name);
    }
    ~one()
    {
        cout << "Dectruct one\n";
        delete[] name;
        system("pause");
    }
};
class two
{
    one * test;
public:
    two()
    {
        cout << "Def Constr two\n";
        test = new one[1];
    };
    void add(one obj)
    {
        test[0]=obj;
    };
    ~two()
    {
        cout << "Destr two\n";
        delete[]test;
    };
};
 
void main()
{
    one doc("text");
    two temp;
    temp.add(doc);
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2018, 20:38
Ответы с готовыми решениями:

Удалять каждый раз два элемента через два элемента в списке
Вот список: 1 столб - индекс элемента, 2 столб - название элемента Исходный список: 0 0 1...

UpdatePanel обновляет элементы после второго срабатывания кнопки
Здравствуйте, уважаемые форумчане. В Page_Load-е читаются строки с базы MS SQL и для каждой записи...

Класс: Написать два класса — Normal и Double, в каждом из которых будет два метода — .swap(other) и .what()...
Написать два класса — Normal и Double, в каждом из которых будет два метода — .swap(other) и...

Намекнуть GarbageCollector, что ресурс я удалю сам или можно его удалять только после выполнения деструктора
Доброго времени суток, форумчане! Возникла проблема с последовательностью выполнения...

Объявить два интерфейса. Объявить два класса, первый из которых реализует один из интерфесов, а второй - оба
Помогите написать программу,несеку фишку.Объявить два интерфейса. Объявить два класса, первый из...

2
nmcf
6534 / 5758 / 2621
Регистрация: 14.04.2014
Сообщений: 24,494
17.06.2018, 23:02 2
41-я строка не верна. Копию создавай.
0
servismas
0 / 0 / 1
Регистрация: 22.06.2015
Сообщений: 2
19.06.2018, 19:09  [ТС] 3
Спасибо, заработало.
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
#include <iostream>
using namespace std;
class two;
class one
{
    char *name = new char[10];
public:
    one()
    {
        cout << "Def Constr one\n";
        strcpy_s(name, 1, "");
    }
    one(const char *obj)
    {
        cout << "Reloaded Constr one\n";
        strcpy_s(name, strlen(obj) + 1, obj);
    }
    one(one &obj)
    {
        cout << "Copy Constr one\n";
        strcpy_s(name, strlen(obj.name) + 1, obj.name);
    }
    ~one()
    {
        cout << "Dectruct one\n";
        delete[] name;
        system("pause");
    }
    friend two;
};
class two
{
    one * test;
public:
    two()
    {
        cout << "Def Constr two\n";
        test = new one[1];
    };
    void add(one obj)
    {
        strcpy_s(test[0].name, strlen(obj.name) + 1, obj.name);
    };
    ~two()
    {
        cout << "Destr two\n";
        delete[]test;
    };
};
 
void main()
{
    one doc("text");
    two temp;
    temp.add(doc);
}
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2018, 19:09

Два раза открывается MessageBox.Show после второго вызова MessageBox
Здравствуйте! Подскажите пожалуйста... Мне вот надо было сделать диалоговое окно для ввода данных...

Есть два грида, отображать во втором строку аналогичную первому
Вообщем, на 1 гриде есть фамилии, на втором нужно отображать допустим оценки... как сделать так...

Два комбобокса. Автоматически удалять значения из одного при выборе их в другом.
есть два комбобох как сделать чтобы при выборе из 1 автоматически то удалялось из 2-го и при выборе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.