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

C++

Войти
Регистрация
Восстановить пароль
 
elch10
38 / 21 / 4
Регистрация: 27.04.2015
Сообщений: 164
Завершенные тесты: 2
#1

Проинициализировать sdl раньше чем другие файлы - C++

24.10.2015, 14:23. Просмотров 170. Ответов 2
Метки нет (Все метки)

Есть проект из нескольких файлов. Этот проект использует библиотеку sdl. Есть главный файл, где проходит инициализация sdl и есть функция main. Еще есть два файла: один заголовочный ,другой cpp. В этих двух файлах определены классы, которые используют библиотеку sdl. Дело в том что классы используют библиотеку sdl, a sdl инициализируется в main( т.е.позже), в классе есть статические переменные, а так как sdl ещё не подключена эти переменные, ничем не инициализируются и получают NULL. Как это исправить?
Вот пример
C++
1
2
3
4
5
6
7
8
//main.cpp
#include"abc.h"
void initSdl(){}//инициализация sdl
int main()//тут цикл программы
{
initSdl();
//и так далее
}
C++
1
2
3
4
5
6
7
//abc.h
#include<SDL.h>
class some
{
private:
static SDL_Texture *texture;
}
C++
1
2
3
4
//abc.cpp
#include"abc.h"
SDL_Texture *some::texture=loadTexture();//не обращайте внимания, эта функция загружает текстуру
//здесь же вместо загрузки текстуры переменная texture становится равная NULL
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2015, 14:23     Проинициализировать sdl раньше чем другие файлы
Посмотрите здесь:
Конец файла обнаружен раньше, чем левая { скобка C++
Как вывести текст на экран, используя библиотеку SDL TTF для SDL 2? C++
Указатель скачет куда хочет и более поздний код выполняется раньше чем тот, который стоит выше C++ WinAPI
Как "поймать" ошибку раньше, чем программа? C++ Builder
C++ Header files и другие подключаемые файлы
C++ Как воспроизвести mp3 и другие звуковые файлы стандартными средствами Windows?
C++ Из одного файла считать целые числа, в другие файлы записать четные и нечетные числа
проинициализировать строку в конструкторе C++
C++ [файлы]В чем ошибка?
Проинициализировать массив случайными символами от A до Z. C++
C++ Проинициализировать массив во время компиляции
Проинициализировать массив случайными символами от A до Z C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
25.10.2015, 10:47     Проинициализировать sdl раньше чем другие файлы #2
Можно было бы пошаманить с бубном над порядком статической инициализации, вынеся инициализацию SDL в конструктор глобального объекта, но надёжнее воспользоваться ленивой инициализацией (то есть, сделать так, чтобы some загружал свою текстуру при первом обращении к нему).
elch10
38 / 21 / 4
Регистрация: 27.04.2015
Сообщений: 164
Завершенные тесты: 2
25.10.2015, 14:42  [ТС]     Проинициализировать sdl раньше чем другие файлы #3
Да ,спасибо! Я так и сделал, но когда я задал похожий вопрос на [другом форуме], то мне напиcали что я идиот и не знаю даже синтаксис c++ и т.д. Вот что мне ответили: "У тебя нету пока базы в программировании.
Разберись с языком C++ для начала.".
Yandex
Объявления
25.10.2015, 14:42     Проинициализировать sdl раньше чем другие файлы
Ответ Создать тему
Опции темы

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