3 / 3 / 2
Регистрация: 04.07.2015
Сообщений: 187
|
|
1 | |
Ошибка при работе с объектом класса в конструкторе другого класса29.10.2016, 17:37. Показов 659. Ответов 13
Метки нет Все метки)
(
Имеется данный код: https://github.com/ubelian/glg... ter/glgame
В файле Food.cpp в конструкторе класса Food::Food() на 19 строке закомментировано обращение объекта snake класса Snake к методу getHeadCP();. Эта строка вызывает некую ошибку в процессе работы программы, которую понять я не могу. Если snake.getHeadCP() написать не в конструкторе, а в любом другом методе, то все работает нормально. Можно было бы подумать, что объект food класса Food создается раньше чем snake, но это не так. Прошу помощи
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
29.10.2016, 17:37 | |
Ответы с готовыми решениями:
13
Создание объекта класса с полем являющимся объектом другого класса Инициализация объектов класса в конструкторе другого класса Ошибка при попытке использовать объект класса в определении другого класса
|
3 / 3 / 2
Регистрация: 04.07.2015
Сообщений: 187
|
|
29.10.2016, 19:49 [ТС] | 3 |
0
|
3 / 3 / 2
Регистрация: 04.07.2015
Сообщений: 187
|
|
29.10.2016, 20:12 [ТС] | 5 |
Есть. Я давал уже ссылку сверху на исходный код, может поможет. Не пойму в чем дело. По любому же ошибка банальная
0
|
![]() |
|
29.10.2016, 20:15 | 6 |
Sinkha, у вас неправильный подход. Объекты классов
Food и Snake определены как глобальные в разных единицах трансляции (в разных cpp-файлах). Стандарт языка не гарантирует порядок инициализации объектов в таких случаях.
0
|
3 / 3 / 2
Регистрация: 04.07.2015
Сообщений: 187
|
|
29.10.2016, 20:38 [ТС] | 8 |
Это объясняет уже пару вещей. А как правильно объеденить все эти определения в 1ой единице трансляции?
0
|
3 / 3 / 2
Регистрация: 04.07.2015
Сообщений: 187
|
|
29.10.2016, 20:52 [ТС] | 10 |
0
|
3 / 3 / 2
Регистрация: 04.07.2015
Сообщений: 187
|
|
29.10.2016, 21:21 [ТС] | 12 |
Кстати да. Но я задавался первоначально целью по максимуму все инкапсулировать, чтобы подключил хедеры и РАЗ! и все заработало.
0
|
Комп_Оратор)
![]() |
|
29.10.2016, 21:32 | 13 |
Но Вы включаете хедер в хедер, а не на перекрест хедер одного в cpp другого. Советов не слушаете и говорите, что если включать не так как у Вас сделано, то не работает. Но Вы пробовали не те варианты, что надо. А вариантов много.
![]()
0
|
3 / 3 / 2
Регистрация: 04.07.2015
Сообщений: 187
|
|
29.10.2016, 21:50 [ТС] | 14 |
Я просто был не в курсе что стандарт не гарантирует создание объекта в заданом порядке, если объявлять глоб переменные в разных файлах. При дебаге выяснилось, что объект snake в конструкторе food в момент вызова конструктора не существует. А перекресное включение нужно было для того чтобы food.cpp не говорил, мол snake не определен, так как он им пользуется.
0
|
29.10.2016, 21:50 | |
Помогаю со студенческими работами здесь
14
Ошибка при вызове метода класса в методе другого класса Ошибка при открытии класса в конструкторе
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |