Форум программистов, компьютерный форум CyberForum.ru

Функция get() не возвращает значение - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Cоздать класс по ООП http://www.cyberforum.ru/cpp-beginners/thread957475.html
Нужно создать класс по ООП (Объектно ориентированом програмировании) на вижуал
C++ Problem with passing a list variable by a reference Здравствуйте. Не знал, как нормально сформулировать заглавие на русском! :D В общем такая проблема. Есть C++ Win32 Empty Project Application. Программа: как всегда улучшаю свою предыдущую версию рендеринга объекта, считываемого из obj файла. На этот раз разделяю программу по отдельным файлам (классам). В главном файле создал переменную типа Vertex (этот тип я реализовал в другом классе (т.е. в... http://www.cyberforum.ru/cpp-beginners/thread957464.html
C++ Глаз замылился, всё ли правильно?
Доброго времени суток! Ребят, гляньте, нет утечки памяти: char **table = new char*; for (int i=0; i < ROWS; i++) table = new char;
Зачёт по С++ C++
Ребят помогите подготовиться к зачёту: 1)написать директиву препроцессора, которая реализует вставку собственного заголовочного файла с именем main 2)Определить имя константы:3,1415 3)Создать именованные константы TRUE, FALSE для обозначения логических результатов. Спасибо за ранее!
C++ Используя динамический массив, обработать элементы http://www.cyberforum.ru/cpp-beginners/thread957452.html
Дан массив целых чисел из n элементов. Удалить из него все элементы, в записи которых последняя цифра равна 0.
C++ MaxMin слова в строке Ребята, помогите реализовать задачу: "В тексте, введенном пользователем с клавиатуры, найти самое длинное и самое короткое слово и вывести их". НЕЛЬЗЯ использовать strtok и классы( подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.09.2013, 11:21     Функция get() не возвращает значение
Цитата Сообщение от dimakozyr Посмотреть сообщение
В смысле не этот? Он у меня всего один в программе объявлен.
В прямом смысле. Где вы его объявляете? Это поле класса C_Scenes, которое инициализируется нолём при создании объектов этого класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class C_Scenes: protected C_Button {
 
  public:
      
      C_Scenes() : img_background_3(0), screen(0) {} // инициализация screen нолём
 
      void loadImages();
      void cleanMemory();
      void blittingImage(int, int, SDL_Surface*, SDL_Surface*);
      void keyEvents();
      void sceneDraw_3();
      void sceneDraw_4();
 
      inline SDL_Surface* getScreen()              { return screen; }
      inline void setScreen(SDL_Surface* variable) { screen = variable; }  
      
  private:
          
      SDL_Surface* img_background_3;
      SDL_Surface* screen;  // вот он
};
Один объет этого класса создаётся при создании объекта класса C_MainClass, в начале работы программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class C_MainClass {
 
  public:
 
      C_Scenes o_scenes; // тут есть screen, который будет инициализирован нолём при создании объекта
          
      void initSDL();
      void startAllMethods();  
 
  private:
          
      enum {_screenWidth     = 960,
            _screenHeigth    = 640,
            _screenColorBits = 32};
};
Потом, при вызове метода startAllMethods(), в котором делается вызов initSDL(), полю screen этого объекта (o_scenes) присваивается значение:
C++
1
2
3
4
C_MainClass::initSDL() {    
    SDL_Init(SDL_INIT_EVERYTHING);
    o_scenes.setScreen(SDL_SetVideoMode(_screenWidth, _screenHeigth, 
                                        _screenColorBits, SDL_SWSURFACE));
Кроме этого объекта (в классе C_MainClass), у вас, в файле C_DrawScene_1.cpp, объявлен глобальный объект класса C_Scenes, по имени o_scenesC_DrawScene_1, в котором тоже есть screen, инициализируемый нолём, при создании этого объекта:
C++
1
2
3
4
5
6
#include "C_DrawScene_1.h"
#include "C_Scenes.h"
#include "C_Button.h"
 
C_Scenes o_scenesC_DrawScene_1;
...
Но screen этого объекта так и остаётся равен NULL.
Потом в методах, в файле C_DrawScene_1.cpp, происходит попытка обращения по нулевому указателю:
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
void C_DrawScene_1::scene_1_events() {
    C_Button o_buttonC_DrawScene_1;
 
    C_Button o_button_1_play    (150, 100, 650, 218);
    C_Button o_button_1_sound   (200, 400, 106, 106);
    C_Button o_button_1_facebook(400, 400, 106, 106);
    C_Button o_button_1_twitter (600, 400, 106, 106);
    scene_1_loadImages();
    int isCicleEnd = 0;
    while(isCicleEnd == 0)
        if(SDL_PollEvent(&o_buttonC_DrawScene_1.getEvent())) {
            o_button_1_play.    buttonEvents(&o_buttonC_DrawScene_1.getEvent(), 0);
            o_button_1_sound.   buttonEvents(&o_buttonC_DrawScene_1.getEvent(), 1);
            o_button_1_facebook.buttonEvents(&o_buttonC_DrawScene_1.getEvent(), 2);
            o_button_1_twitter. buttonEvents(&o_buttonC_DrawScene_1.getEvent(), 3);
            
            if(o_buttonC_DrawScene_1.getEvent().type == SDL_QUIT)
                isCicleEnd = 1;
            //if(o_buttonC_DrawScene_1.getEvent().type = SDL_KEYDOWN &&
              // o_buttonC_DrawScene_1.getEvent().key.keysym.sym == SDLK_ESCAPE)
                //isCicleEnd = 1;
            SDL_Flip(o_scenesC_DrawScene_1.getScreen()); // !!! первая попытка обращения
        }
    scene_1_clean();
}
 
Текущее время: 23:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru