Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
40 / 21 / 3
Регистрация: 27.04.2015
Сообщений: 176
1

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

24.10.2015, 14:23. Просмотров 299. Ответов 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
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2015, 14:23
Ответы с готовыми решениями:

Программа кончается раньше чем надо
Почему после ответа пользователя на &quot;as your biseiness?&quot; компилятор пишет programm finished. Как...

NT Service стартует раньше, чем другие сервисы
Rabotaet na baze ntsvc.ocx , vse prekrasno. No pri perezapuske compa, moi service startuet ranshe...

Вывести файлы с базы которые добавлены не раньше чем 20 дней назад
Вечер добрый, Созрел такой вопрос как вывести файлы с базы данных которые например находятся на...

один ПХП файл отображается в браузере как код, другие файлы отображают веб-страницу. В чем причина?
Здравствуйте, я еще начинающий в php, поэтому вопрос может показаться тупым. У меня есть 6 php...

2
Эксперт С++
1659 / 1031 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
25.10.2015, 10:47 2
Можно было бы пошаманить с бубном над порядком статической инициализации, вынеся инициализацию SDL в конструктор глобального объекта, но надёжнее воспользоваться ленивой инициализацией (то есть, сделать так, чтобы some загружал свою текстуру при первом обращении к нему).
1
40 / 21 / 3
Регистрация: 27.04.2015
Сообщений: 176
25.10.2015, 14:42  [ТС] 3
Да ,спасибо! Я так и сделал, но когда я задал похожий вопрос на [другом форуме], то мне напиcали что я идиот и не знаю даже синтаксис c++ и т.д. Вот что мне ответили: "У тебя нету пока базы в программировании.
Разберись с языком C++ для начала.".
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2015, 14:42

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Чем отличаются SFML, SDL, OpenGL
Объясните, пожалуйста, отличия SFML, SDL, OpenGL. Знаю, что все есть работа с графикой, но мне не...

Файл изменен раньше, чем установлена OC
Объясните как такое возможно? Винда установлена в 10 месяца, а файлы изменены в 9? Или я чего-то...

У клиента АПы раньше чем у всех!
Ну как такое может быть?! Клиент видит АПы раньше чем все остальные! К примеру сегодня (15.02.2010)...

Выход из цикла происходит раньше, чем предполагалось
#include&lt;iostream&gt; using namespace std; void main() { char...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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