162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 559
|
||||||||||||||||
1 | ||||||||||||||||
Функция get() не возвращает значение17.09.2013, 17:41. Показов 1376. Ответов 16
Метки нет (Все метки)
Есть класс, в котором определен объект типа SDL_Surface*.
Пытаюсь передать его в сторонний класс с помощью метода getScreen(), но он по неизвестной причине не передается Файл A.h:
0
|
17.09.2013, 17:41 | |
Ответы с готовыми решениями:
16
Функция не возвращает значение Функция не возвращает значение Функция не возвращает значение Функция не возвращает значение |
162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 559
|
||||||||||||||||
17.09.2013, 19:53 [ТС] | 3 | |||||||||||||||
Инициализация есть и проходит нормально, протестировал.
Не стал включать, чтобы не усложнять пример. Сорри, ошибся Файл A.h:
0
|
162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 559
|
|||||||||||||||||||||
18.09.2013, 23:22 [ТС] | 4 | ||||||||||||||||||||
Есть переменная SDL_Surface* screen. Она почему-то не передается в функцию, не пойму почему.
Файл C_DrawScene_1.h:
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
19.09.2013, 01:35 | 9 | |||||
У вас, в этом объекте: C_Scenes o_scenesC_DrawScene_1, screen не инициализирован.
1
|
162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 559
|
|
19.09.2013, 08:38 [ТС] | 10 |
В смысле не этот? Он у меня всего один в программе объявлен. При старте программы появляется черное окно, это говорит о том, что screen проинициализирован.
А вот в функции void C_DrawScene_1::scene_1_draw() функция o_scenesC_DrawScene_1.getScreen() почему-то работает неправильно. Она должна на плоскость screen загружать другие изображения.
0
|
Каратель
|
|
19.09.2013, 09:18 | 11 |
1
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||||||||||||||||||||||
19.09.2013, 11:21 | 12 | |||||||||||||||||||||||||
В прямом смысле. Где вы его объявляете? Это поле класса C_Scenes, которое инициализируется нолём при создании объектов этого класса:
Потом в методах, в файле C_DrawScene_1.cpp, происходит попытка обращения по нулевому указателю:
1
|
162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 559
|
||||||
19.09.2013, 11:33 [ТС] | 13 | |||||
Ага, я понял. Вообще идея была. проинициализировать screen в отдельном классе
Не учел, что он будет каждый раз при создании объекта обнуляться конструктором. А что если проинициализировать screen внутри конструктора, в классе, в котором он объявлен?
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
19.09.2013, 14:05 | 14 | |||||
Кто он? У каждого объекта свой screen, поэтому ничего обнуляться, у других объектов, не будет. Тут дело, как раз, не в начальной инициализации нолём, а в том, что после этого, дальше в коде, он не получает значение. Эту библиотеку я не знаю, как там что должно быть - тоже. Углубляться в ваш код - желания нет. Но если создаёте объект (C_Scenes o_scenesC_DrawScene_1) и в нём есть указатель screen, то позаботьтесь о том, чтобы задать ему значение (через setScreen()), отличное от NULL. Чем, где, как - это я не знаю, думайте. Например, перед первым обращением по значению screen (файл C_DrawScene_1.cpp):
1
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
19.09.2013, 16:35 | 16 | |||||
Раз вы хотите действовать через глобальный объект o_scenesC_DrawScene_1, тогда (в начале программы) и присваивайте значение screen из этого объекта, а не из o_scenes (который в C_MainClass).
1
|
162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 559
|
|
19.09.2013, 16:39 [ТС] | 17 |
Хорошо, так и сделаю, спасибо
0
|
19.09.2013, 16:39 | |
19.09.2013, 16:39 | |
Помогаю со студенческими работами здесь
17
Почему функция не возвращает значение? Функция неправильно возвращает значение Функция не возвращает значение (консолька, си++) Функция возвращает неправильное значение Функция возвращает странное значение Функция возвращает неверное значение Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |