Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 9
1

Массив объектов одного класса как поле другого класса

19.03.2018, 12:09. Просмотров 1524. Ответов 7

Доброе время суток. Мне тут в универе задали лабу, нужно создать класс полем которого будет массив объектов класса из предыдущей лабы и в котором будут содержаться методы выводящие в консоль информацию о некоторых из этих объектов. Как мне кажется все правильно написал и оформил но компилятор ругается на ошибки природа которых мне не совсем ясна. Прошу помочь и указать в чем я не прав. abit тот самый класс из первой лабы. menu - класс поле которого массив объектов и который содержит нужные методы. Ошибки что выдает компилятор:
menu.h(5): error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
menu.h(5): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
menu.h(5): error C2238: непредвиденные лексемы перед ";"
menu.h(11): error C2061: синтаксическая ошибка: идентификатор "abit"
menu.h(5): error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
menu.h(5): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
menu.h(5): error C2238: непредвиденные лексемы перед ";"
menu.h(11): error C2061: синтаксическая ошибка: идентификатор "abit"

------------main.cpp -------------------

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
#include <iostream>
#include "abit.h"
#include "menu.h"
 
using namespace std;
 
void main()
{
    menu List;
    List.Showmenu();
    List.~menu();
    system("pause");
}

-------------abit.h----------------------

C++ (Qt)
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
#pragma once
#include "menu.h"
class abit
{
    private:
        char *address;
        char *name;
        char *surname;
        char *middlename;
        int math;
        int physics;
        int ukrainian;
    public:
        void set_address(char *addresstmp);
        void set_name(char *nametmp);
        void set_surname(char *surnametmp);
        void set_middlename(char *middletmp);
        void set_math(int temp);
        void set_physics(int temp);
        void set_ukrainian(int temp);
        char *get_address();
        char *get_name();
        char *get_surname();
        char *get_middlename();
        int get_math();
        int get_physics();
        int get_ukrainian();
        void writer();
        abit();
        ~abit();
};


--------------------abit.cpp-------------------------
C++ (Qt)
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#define _CRT_SECURE_NO_WARNINGS
#include "abit.h"
#include "menu.h"
#include <cstring>
#include <iostream>
using namespace std;
    void abit::set_address(char *addresstmp)
    {
        if (address != NULL)
        {
            delete[] address;
        }
        address = new char[strlen(addresstmp) + 1];
        strcpy(address, addresstmp);
    }
    void abit::set_name(char *nametmp)
    {
        if (name != NULL)
        {
            delete[] name;
        }
        name = new char[strlen(nametmp) + 1];
        strcpy(name, nametmp);
    }
    void abit::set_surname(char *surnametmp)
    {
        if (surname != NULL)
        {
            delete[] surname;
        }
        surname = new char[strlen(surnametmp) + 1];
        strcpy(surname, surnametmp);
    }
    void abit::set_middlename(char *middletmp)
    {
        if (middlename != NULL) {
            delete[] middlename;
        }
        middlename = new char[strlen(middletmp) + 1];
        strcpy(middlename, middletmp);
    }
    void abit::set_math(int temp)
    {
        math = temp;
    }
    void abit::set_physics(int temp)
    {
        physics = temp;
    }
    void abit::set_ukrainian(int temp)
    {
        ukrainian = temp;
    }
    char *abit::get_address()
    {
        return address;
    }
    char *abit::get_name()
    {
        return name;
    }
    char *abit::get_surname()
    {
        return surname;
    }
    char *abit::get_middlename()
    {
        return middlename;
    }
    int abit::get_math()
    {
        return math;
    }
    int abit::get_physics()
    {
        return physics;
    }
    int abit::get_ukrainian()
    {
        return ukrainian;
    }
    abit::abit() : math(0), physics(0), ukrainian(0) {
        if (address != NULL)
        {
            delete[] address;
        }
        else
        {
            address = new char[strlen("Street 1") + 1];
            strcpy(address, "Street 1");
        }
        if (name != NULL)
        {
            delete[] name;
        }
        else
        {
            name = new char[strlen("Ivan") + 1];
            strcpy(name, "Ivan");
        }
        if (surname != NULL)
        {
            delete[] surname;
        }
        else
        {
            surname = new char[strlen("Ivanov") + 1];
            strcpy(surname, "Ivanov");
        }
        if (middlename != NULL)
        {
            delete[] middlename;
        }
        else
        {
            middlename = new char[strlen("Ivanovich") + 1];
            strcpy(middlename, "Ivanovich");
        }
        math = 0;
        physics = 0;
        ukrainian = 0;
    };
    void abit::writer()
    {
        cout << "Abit pib: " << surname << " " << name << " " << middlename << endl;
        cout << "Abit address: " << address << endl;;
        cout << "Abit marks: " << "Math - " << math << "; Physics - " << physics << "; Ukrainian - " << ukrainian << endl;
 
    }
    abit::~abit() {
 
        if (address != NULL)
        {
            delete[] address;
        }
        if (name != NULL)
        {
            delete[] name;
        }
        if (surname != NULL)
        {
            delete[] surname;
        }
        if (middlename != NULL)
        {
            delete[] middlename;
        }
    }

-------------------menu.h-------------------------


C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
#include "abit.h"
class menu
{
    abit *abitList;
public:
    void Showmenu();
    void ShowFirstList();
    void ShowSecondList(int n);
    void ShowThirdList(int count);
    void SortArray(abit *array);
    menu();
    ~menu();
};

-----------------menu.cpp-------------------------




C++ (Qt)
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#define _CRT_SECURE_NO_WARNINGS
#include "menu.h"
#include "abit.h"
#include <cstring>
#include <iostream>
using namespace std;
 
menu::menu()
{
    if (abitList != NULL)
    {
        delete[] abitList;
    }
    abitList = new abit[5];
    //Первый абитуриент
    abitList[1].set_name("Ivan");
    abitList[1].set_surname("Ivanov");
    abitList[1].set_middlename("Ivanovich");
    abitList[1].set_math(2);
    abitList[1].set_physics(3);
    abitList[1].set_ukrainian(5);
    //Второй абитуриент
    abitList[2].set_name("Petya");
    abitList[2].set_surname("Petrov");
    abitList[2].set_middlename("Petrovich");
    abitList[2].set_math(5);
    abitList[2].set_physics(4);
    abitList[2].set_ukrainian(2);
    //Третий абитуриент
    abitList[3].set_name("Dmitriy");
    abitList[3].set_surname("Chaban");
    abitList[3].set_middlename("Igorevich");
    abitList[3].set_math(3);
    abitList[3].set_physics(3);
    abitList[3].set_ukrainian(3);
    //Четвертый абитуриент
    abitList[4].set_name("Melnik");
    abitList[4].set_surname("Nikolay");
    abitList[4].set_middlename("Andreevich");
    abitList[4].set_math(4);
    abitList[4].set_physics(4);
    abitList[4].set_ukrainian(2);
    //Пятый абитуриент
    abitList[5].set_name("Belinskiy");
    abitList[5].set_surname("Vitaliy");
    abitList[5].set_middlename("Valentinovich");
    abitList[5].set_math(4);
    abitList[5].set_physics(3);
    abitList[5].set_ukrainian(3);
}
void menu::Showmenu()
{
    int flag;
    int n;
    int count;
    cout << "-------------------------menu--------------------------" << endl;
    cout << "Press 1 - Show list of abit's with low marks " << endl;
    cout << "Press 2 - Show list of abit's with marks >= your value" << endl;
    cout << "Press 3 - Show N abit's with best summ of marks" << endl;
    cin >> flag;
    switch (flag)
    {
    case 1:
    {
        ShowFirstList();
    }
    case 2:
    {
        cout << "Enter value : ";
        cin >> n;
        ShowSecondList(n);
    }
    case 3:
    {
        cout << "Enter N : ";
        cin >> count;
        ShowThirdList(count);
    }
    }
}
void menu::ShowFirstList()
{
    cout << "List of abit's with low marks : " << endl;;
    for (int i = 0; i < 5; i++)
    {
        if ((abitList[i].get_math() < 3) || (abitList[i].get_physics() < 3) || (abitList[i].get_ukrainian() < 3))
        {
            cout << i << ". " << abitList[i].get_name() << endl;
        }
    }
}
void menu::ShowSecondList(int n)
{
    cout << "List of abit's with marks >= your value : " << endl;
    for (int i = 0; i < 5; i++)
    {
        if ((abitList[i].get_math() + abitList[i].get_physics() + abitList[i].get_ukrainian()) >= n)
        {
            cout << i << ". " << abitList[i].get_name() << endl;
        }
    }
}
void menu::ShowThirdList(int count)
{
    SortArray(abitList);
    cout << count << " abit's with best summ of marks :" << endl;
    for (int i = 0; i < count; i++)
    {
        cout << i << ". " << abitList[i].get_name() << "Summ - " << (abitList[i].get_math() + abitList[i].get_physics() + abitList[i].get_ukrainian()) << endl;
    }
 
 
}
void menu::SortArray(abit *array)
{
    abit temp;
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            if ((array[j].get_math() + array[j].get_physics() + array[j].get_ukrainian()) < (array[j + 1].get_math() + array[j + 1].get_physics() + array[j + 1].get_ukrainian()))
            {
                temp.set_address(array[j].get_address());
                temp.set_name(array[j].get_name());
                temp.set_surname(array[j].get_surname());
                temp.set_middlename(array[j].get_middlename());
                temp.set_math(array[j].get_math());
                temp.set_physics(array[j].get_physics());
                temp.set_ukrainian(array[j].get_ukrainian());
                array[j].set_address(array[j + 1].get_address());
                array[j].set_name(array[j + 1].get_name());
                array[j].set_surname(array[j + 1].get_surname());
                array[j].set_middlename(array[j + 1].get_middlename());
                array[j].set_math(array[j + 1].get_math());
                array[j].set_physics(array[j + 1].get_physics());
                array[j].set_ukrainian(array[j + 1].get_ukrainian());
                array[j + 1].set_address(array[j].get_address());
                array[j + 1].set_name(array[j].get_name());
                array[j + 1].set_surname(array[j].get_surname());
                array[j + 1].set_middlename(array[j].get_middlename());
                array[j + 1].set_math(array[j].get_math());
                array[j + 1].set_physics(array[j].get_physics());
                array[j + 1].set_ukrainian(array[j].get_ukrainian());
            }
        }
    }
}
 
menu::~menu()
{
    if (abitList != NULL)
    {
        delete[]abitList;
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2018, 12:09
Ответы с готовыми решениями:

Массив объектов класса как член другого класса
Здравствуйте. У меня тут возникла проблемка #include &quot;main.h&quot; class player { public: ...

Как переместить из стека одного класса в массив другого класса?
// HW_on.24.11_classStack_SantaClaus.cpp: определяет точку входа для консольного приложения. //...

Перегрузка операции + с преобразованием объектов одного класса в объекты другого класса
Доброго времени суток! Изучаю ООП, при выполнении следующего задания возникли сложности: Создать...

Инициализация экземпляра класса, как поле другого класса
Всем доброго времени суток ! Есть класс: class a{ public: a(int _type): type(_type) {} ...

7
Модератор
Эксперт С++
10267 / 8582 / 5201
Регистрация: 18.12.2011
Сообщений: 22,964
19.03.2018, 12:21 2
В abit.h Лишний #include menu.h:
C++
1
2
3
//#include "menu.h" 
class abit {
....
1
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,176
19.03.2018, 12:24 3
это происходит, потому что два файла пытаются подключить друг друга.
1
0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 9
19.03.2018, 12:39  [ТС] 4
Спасибо, помогло.

Добавлено через 11 минут
zss, Появилась новая проблема после запуска открывается откладка со словами "Необработанное исключение по адресу 0x656A66CB (ucrtbased.dll) в Final_02_Pract.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCDBD."
Указывая на 86 строку abit.cpp, не могли бы вы и с этим помочь? Так же убрал else которые были в конструкторе, они там не нужны и присвивания 3х переменных, т.к. они в списке инициализации конструктора
0
0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 9
19.03.2018, 15:19  [ТС] 5
Помогите пожалуйста.Мне тут в универе задали лабу, нужно создать класс полем которого будет массив объектов класса из предыдущей лабы и в котором будут содержаться методы выводящие в консоль информацию о некоторых из этих объектов. После запуска открывается окно завершение роботы и в отладчике вот это "Необработанное исключение по адресу 0x52F966CB (ucrtbased.dll) в Final_02_Pract.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCDBD." Прошу помочь и указать в чем я не прав. abit тот самый класс из первой лабы. menu - класс поле которого массив объектов и который содержит нужные методы.

------main.cpp--------

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
#include <iostream>
#include "abit.h"
#include "menu.h"
 
using namespace std;
 
void main()
{
    menu List;
    List.Showmenu();
    List.~menu();
    system("pause");
}


------abit.h------------

C++ (Qt)
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
#pragma once
class abit
{
    private:
        char *address;
        char *name;
        char *surname;
        char *middlename;
        int math;
        int physics;
        int ukrainian;
    public:
        void set_address(char *addresstmp);
        void set_name(char *nametmp);
        void set_surname(char *surnametmp);
        void set_middlename(char *middletmp);
        void set_math(int temp);
        void set_physics(int temp);
        void set_ukrainian(int temp);
        char *get_address();
        char *get_name();
        char *get_surname();
        char *get_middlename();
        int get_math();
        int get_physics();
        int get_ukrainian();
        void writer();
        abit();
        ~abit();
};


------abut.cpp----------

C++ (Qt)
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#define _CRT_SECURE_NO_WARNINGS
#include "abit.h"
#include "menu.h"
#include <cstring>
#include <iostream>
using namespace std;
    void abit::set_address(char *addresstmp)
    {
        if (address != NULL)
        {
            delete[] address;
        }
        address = new char[strlen(addresstmp) + 1];
        strcpy(address, addresstmp);
    }
    void abit::set_name(char *nametmp)
    {
        if (name != NULL)
        {
            delete[] name;
        }
        name = new char[strlen(nametmp) + 1];
        strcpy(name, nametmp);
    }
    void abit::set_surname(char *surnametmp)
    {
        if (surname != NULL)
        {
            delete[] surname;
        }
        surname = new char[strlen(surnametmp) + 1];
        strcpy(surname, surnametmp);
    }
    void abit::set_middlename(char *middletmp)
    {
        if (middlename != NULL) 
        {
            delete[] middlename;
        }
        middlename = new char[strlen(middletmp) + 1];
        strcpy(middlename, middletmp);
    }
    void abit::set_math(int temp)
    {
        math = temp;
    }
    void abit::set_physics(int temp)
    {
        physics = temp;
    }
    void abit::set_ukrainian(int temp)
    {
        ukrainian = temp;
    }
    char *abit::get_address()
    {
        return address;
    }
    char *abit::get_name()
    {
        return name;
    }
    char *abit::get_surname()
    {
        return surname;
    }
    char *abit::get_middlename()
    {
        return middlename;
    }
    int abit::get_math()
    {
        return math;
    }
    int abit::get_physics()
    {
        return physics;
    }
    int abit::get_ukrainian()
    {
        return ukrainian;
    }
    abit::abit() : math(0), physics(0), ukrainian(0) 
    {
        if (address != NULL)
        {
            delete[] address;
        }
        address = new char[strlen("Street 1") + 1];
        strcpy(address, "Street 1");
        if (name != NULL)
        {
            delete[] name;
        }
        name = new char[strlen("Ivan") + 1];
        strcpy(name, "Ivan");
        if (surname != NULL)
        {
            delete[] surname;
        }
        surname = new char[strlen("Ivanov") + 1];
        strcpy(surname, "Ivanov");
        if (middlename != NULL)
        {
            delete[] middlename;
        }
        middlename = new char[strlen("Ivanovich") + 1];
        strcpy(middlename, "Ivanovich");
    };
    void abit::writer()
    {
        cout << "Abit pib: " << surname << " " << name << " " << middlename << endl;
        cout << "Abit address: " << address << endl;;
        cout << "Abit marks: " << "Math - " << math << "; Physics - " << physics << "; Ukrainian - " << ukrainian << endl;
 
    }
    abit::~abit() 
    {
 
        if (address != NULL)
        {
            delete[] address;
        }
        if (name != NULL)
        {
            delete[] name;
        }
        if (surname != NULL)
        {
            delete[] surname;
        }
        if (middlename != NULL)
        {
            delete[] middlename;
        }
    }



--------menu.h----------



C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
#include "abit.h"
class menu
{
    abit *abitList;
public:
    void Showmenu();
    void ShowFirstList();
    void ShowSecondList(int n);
    void ShowThirdList(int count);
    void SortArray(abit *array);
    menu();
    ~menu();
};


------menu.cpp--------

C++ (Qt)
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#define _CRT_SECURE_NO_WARNINGS
#include "menu.h"
#include "abit.h"
#include <cstring>
#include <iostream>
using namespace std;
 
menu::menu()
{
    if (abitList != NULL)
    {
        delete[] abitList;
    }
    abitList = new abit[5];
    //Первый абитуриент
    abitList[1].set_name("Ivan");
    abitList[1].set_surname("Ivanov");
    abitList[1].set_middlename("Ivanovich");
    abitList[1].set_math(2);
    abitList[1].set_physics(3);
    abitList[1].set_ukrainian(5);
    //Второй абитуриент
    abitList[2].set_name("Petya");
    abitList[2].set_surname("Petrov");
    abitList[2].set_middlename("Petrovich");
    abitList[2].set_math(5);
    abitList[2].set_physics(4);
    abitList[2].set_ukrainian(2);
    //Третий абитуриент
    abitList[3].set_name("Dmitriy");
    abitList[3].set_surname("Chaban");
    abitList[3].set_middlename("Igorevich");
    abitList[3].set_math(3);
    abitList[3].set_physics(3);
    abitList[3].set_ukrainian(3);
    //Четвертый абитуриент
    abitList[4].set_name("Melnik");
    abitList[4].set_surname("Nikolay");
    abitList[4].set_middlename("Andreevich");
    abitList[4].set_math(4);
    abitList[4].set_physics(4);
    abitList[4].set_ukrainian(2);
    //Пятый абитуриент
    abitList[5].set_name("Belinskiy");
    abitList[5].set_surname("Vitaliy");
    abitList[5].set_middlename("Valentinovich");
    abitList[5].set_math(4);
    abitList[5].set_physics(3);
    abitList[5].set_ukrainian(3);
}
void menu::Showmenu()
{
    int flag;
    int n;
    int count;
    cout << "-------------------------menu--------------------------" << endl;
    cout << "Press 1 - Show list of abit's with low marks " << endl;
    cout << "Press 2 - Show list of abit's with marks >= your value" << endl;
    cout << "Press 3 - Show N abit's with best summ of marks" << endl;
    cin >> flag;
    switch (flag)
    {
    case 1:
    {
        ShowFirstList();
    }
    case 2:
    {
        cout << "Enter value : ";
        cin >> n;
        ShowSecondList(n);
    }
    case 3:
    {
        cout << "Enter N : ";
        cin >> count;
        ShowThirdList(count);
    }
    }
}
void menu::ShowFirstList()
{
    cout << "List of abit's with low marks : " << endl;;
    for (int i = 0; i < 5; i++)
    {
        if ((abitList[i].get_math() < 3) || (abitList[i].get_physics() < 3) || (abitList[i].get_ukrainian() < 3))
        {
            cout << i << ". " << abitList[i].get_name() << endl;
        }
    }
}
void menu::ShowSecondList(int n)
{
    cout << "List of abit's with marks >= your value : " << endl;
    for (int i = 0; i < 5; i++)
    {
        if ((abitList[i].get_math() + abitList[i].get_physics() + abitList[i].get_ukrainian()) >= n)
        {
            cout << i << ". " << abitList[i].get_name() << endl;
        }
    }
}
void menu::ShowThirdList(int count)
{
    SortArray(abitList);
    cout << count << " abit's with best summ of marks :" << endl;
    for (int i = 0; i < count; i++)
    {
        cout << i << ". " << abitList[i].get_name() << "Summ - " << (abitList[i].get_math() + abitList[i].get_physics() + abitList[i].get_ukrainian()) << endl;
    }
 
 
}
void menu::SortArray(abit *array)
{
    abit temp;
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            if ((array[j].get_math() + array[j].get_physics() + array[j].get_ukrainian()) < (array[j + 1].get_math() + array[j + 1].get_physics() + array[j + 1].get_ukrainian()))
            {
                temp.set_address(array[j].get_address());
                temp.set_name(array[j].get_name());
                temp.set_surname(array[j].get_surname());
                temp.set_middlename(array[j].get_middlename());
                temp.set_math(array[j].get_math());
                temp.set_physics(array[j].get_physics());
                temp.set_ukrainian(array[j].get_ukrainian());
                array[j].set_address(array[j + 1].get_address());
                array[j].set_name(array[j + 1].get_name());
                array[j].set_surname(array[j + 1].get_surname());
                array[j].set_middlename(array[j + 1].get_middlename());
                array[j].set_math(array[j + 1].get_math());
                array[j].set_physics(array[j + 1].get_physics());
                array[j].set_ukrainian(array[j + 1].get_ukrainian());
                array[j + 1].set_address(array[j].get_address());
                array[j + 1].set_name(array[j].get_name());
                array[j + 1].set_surname(array[j].get_surname());
                array[j + 1].set_middlename(array[j].get_middlename());
                array[j + 1].set_math(array[j].get_math());
                array[j + 1].set_physics(array[j].get_physics());
                array[j + 1].set_ukrainian(array[j].get_ukrainian());
            }
        }
    }
}
 
menu::~menu()
{
    if (abitList != NULL)
    {
        delete[]abitList;
    }
}
0
Форумчанин
Эксперт CЭксперт С++
8161 / 5009 / 1436
Регистрация: 29.11.2010
Сообщений: 13,455
19.03.2018, 16:20 6
Цитата Сообщение от Genomu Посмотреть сообщение
Прошу помочь и указать в чем я не прав
Можете пройтись отладчиком по шагам и посмотреть в какой конкретно момент возникает исключение.
Но, судя по логу, у вас VS ругается на то, что вы залезли не в свою память.
При осмотре класса abit сразу бросается в глаза, что у вас используются указатели и работа с динамической памятью, но при этом не соблюдено правило трёх. Вам нужно явно определить конструктор копий и оператор копирующего присваивания
C++
1
2
abit(const abit &other);
abit& operator=(const abit &other);
Скорее всего, при копировании, у вас возникает ситуация, что свойства разных объектов ссылаются на один и тот же участок памяти. В итоге при уничтожении первого объекта у нас всё хорошо, а при уничтожении второго мы попадаем на попытку повторного освобождения динамической памяти, что и генерирует ошибку.

Добавлено через 27 минут
 Комментарий модератора 
Genomu, запрещено дублировать темы
0
10 / 10 / 0
Регистрация: 29.04.2013
Сообщений: 145
19.03.2018, 16:38 7
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
abitList = new abit[5];
    //Первый абитуриент
    abitList[1].set_name("Ivan");
    abitList[1].set_surname("Ivanov");
    abitList[1].set_middlename("Ivanovich");
    abitList[1].set_math(2);
    abitList[1].set_physics(3);
    abitList[1].set_ukrainian(5);
    //Второй абитуриент
    abitList[2].set_name("Petya");
    abitList[2].set_surname("Petrov");
    abitList[2].set_middlename("Petrovich");
    abitList[2].set_math(5);
    abitList[2].set_physics(4);
    abitList[2].set_ukrainian(2);
    //Третий абитуриент
    abitList[3].set_name("Dmitriy");
    abitList[3].set_surname("Chaban");
    abitList[3].set_middlename("Igorevich");
    abitList[3].set_math(3);
    abitList[3].set_physics(3);
    abitList[3].set_ukrainian(3);
    //Четвертый абитуриент
    abitList[4].set_name("Melnik");
    abitList[4].set_surname("Nikolay");
    abitList[4].set_middlename("Andreevich");
    abitList[4].set_math(4);
    abitList[4].set_physics(4);
    abitList[4].set_ukrainian(2);
    //Пятый абитуриент
    abitList[5].set_name("Belinskiy");
    abitList[5].set_surname("Vitaliy");
    abitList[5].set_middlename("Valentinovich");
    abitList[5].set_math(4);
    abitList[5].set_physics(3);
    abitList[5].set_ukrainian(3);
Таки 5 абитуриент записывается за пределы массива. А в 0 ячейке остаётся билиберда.
1
0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 9
19.03.2018, 16:57  [ТС] 8
Просто нет слов, на таких мелочах погореть это нужно уметь. Огромное спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2018, 16:57

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Преобразование объектов одного класса в объекты другого
Есть сей код.Тут я пытаюсь осуществить преобразование объекта класса myCl к классу myCl2. Код...

Как сделать вектор/массив объектов одного класса с разным <типом>
У меня есть класс MySet&lt;T&gt;, я хочу сделать массив/вектор таких объектов, в который можно будет...

Как создать массив объектов одного класса в другом, и как к ним обращаться?
вот класс: #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; class File {...

Массив объектов в конструкторе другого класса
есть класс A: class A{ public: double *weights; A() { } A(int a) {


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

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

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