0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 9
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Массив объектов одного класса как поле другого класса19.03.2018, 12:09. Показов 3074. Ответов 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 -------------------
-------------abit.h----------------------
--------------------abit.cpp-------------------------
-------------------menu.h-------------------------
-----------------menu.cpp-------------------------
0
|
19.03.2018, 12:09 | |
Ответы с готовыми решениями:
7
Массив объектов класса как член другого класса Как переместить из стека одного класса в массив другого класса? Перегрузка операции + с преобразованием объектов одного класса в объекты другого класса Инициализация экземпляра класса, как поле другого класса |
Модератор
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,703
|
||||||
19.03.2018, 12:21 | 2 | |||||
В abit.h Лишний #include menu.h:
1
|
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
|
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--------
------abit.h------------
------abut.cpp----------
--------menu.h----------
------menu.cpp--------
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||||||||
19.03.2018, 16:20 | 6 | |||||||||||
Можете пройтись отладчиком по шагам и посмотреть в какой конкретно момент возникает исключение.
Но, судя по логу, у вас VS ругается на то, что вы залезли не в свою память. При осмотре класса abit сразу бросается в глаза, что у вас используются указатели и работа с динамической памятью, но при этом не соблюдено правило трёх. Вам нужно явно определить конструктор копий и оператор копирующего присваивания
Добавлено через 27 минут
0
|
10 / 10 / 0
Регистрация: 29.04.2013
Сообщений: 145
|
||||||
19.03.2018, 16:38 | 7 | |||||
1
|
0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 9
|
|
19.03.2018, 16:57 [ТС] | 8 |
Просто нет слов, на таких мелочах погореть это нужно уметь. Огромное спасибо
0
|
19.03.2018, 16:57 | |
19.03.2018, 16:57 | |
Помогаю со студенческими работами здесь
8
Преобразование объектов одного класса в объекты другого Как сделать вектор/массив объектов одного класса с разным <типом> Как создать массив объектов одного класса в другом, и как к ним обращаться? Массив объектов в конструкторе другого класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |