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

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

19.03.2018, 12:09. Просмотров 373. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
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) {} ...

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

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

7
zss
Модератор
Эксперт С++
8070 / 7213 / 4496
Регистрация: 18.12.2011
Сообщений: 19,078
Завершенные тесты: 1
19.03.2018, 12:21 2
В abit.h Лишний #include menu.h:
C++
1
2
3
//#include "menu.h" 
class abit {
....
1
Mirmik
techpriest
629 / 209 / 56
Регистрация: 27.02.2014
Сообщений: 1,136
19.03.2018, 12:24 3
это происходит, потому что два файла пытаются подключить друг друга.
1
Genomu
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
19.03.2018, 12:39
Genomu
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
MrGluck
Форумчанин
Эксперт CЭксперт С++
8121 / 4973 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
19.03.2018, 16:20 6
Цитата Сообщение от Genomu Посмотреть сообщение
Прошу помочь и указать в чем я не прав
Можете пройтись отладчиком по шагам и посмотреть в какой конкретно момент возникает исключение.
Но, судя по логу, у вас VS ругается на то, что вы залезли не в свою память.
При осмотре класса abit сразу бросается в глаза, что у вас используются указатели и работа с динамической памятью, но при этом не соблюдено правило трёх. Вам нужно явно определить конструктор копий и оператор копирующего присваивания
C++
1
2
abit(const abit &other);
abit& operator=(const abit &other);
Скорее всего, при копировании, у вас возникает ситуация, что свойства разных объектов ссылаются на один и тот же участок памяти. В итоге при уничтожении первого объекта у нас всё хорошо, а при уничтожении второго мы попадаем на попытку повторного освобождения динамической памяти, что и генерирует ошибку.

Добавлено через 27 минут
 Комментарий модератора 
Genomu, запрещено дублировать темы
0
Quadra
10 / 10 / 0
Регистрация: 29.04.2013
Сообщений: 141
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
Genomu
0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 9
19.03.2018, 16:57  [ТС] 8
Просто нет слов, на таких мелочах погореть это нужно уметь. Огромное спасибо
0
19.03.2018, 16:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2018, 16:57

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

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

Инициализация объектов класса в конструкторе другого класса
У меня есть класс Subscriber,в котором есть несколько объектов другого класса Date,мне нужно,чтобы...


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

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

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