Понедельник, 25 Ноября 2024, 19:24

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Вопрос про SDL и указатели
KornivalДата: Воскресенье, 10 Июля 2011, 22:15 | Сообщение # 1
The Witcher
Сейчас нет на сайте
Почему вот такой код
Code

int main()
{
     SDL_Surface *surf, *surf2;
     *surf = SDL_LoadBMP("img.bmp);
     surf2 = surf;
}

работает прекрасно, а вот это
Code

int main()
{
     SDL_Surface *surf, **surf2;
     *surf = SDL_LoadBMP("img.bmp);
     *surf2 = surf;
}

вылетает с ошибкой?

Добавлено (10.07.2011, 22:15)
---------------------------------------------
Мистика biggrin

zodiakДата: Воскресенье, 10 Июля 2011, 22:26 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Quote (Kornival)
*surf2 = surf;


Здесь ты пытаешься разыменовать указатель. Тоесть получить хранящиеся по нему данные. Но ведь он изначально ни на что не указывает.

Делай так:
surf2 = &surf;


Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net
KornivalДата: Воскресенье, 10 Июля 2011, 22:37 | Сообщение # 3
The Witcher
Сейчас нет на сайте
Поборол лень и поковырялся отладчиком-нашел ошибку. Если кому интересно проблема решается так:
Code

SDL_Surface **surf2 = new SDL_Surface*;

Сорри за создание бессмысленной темы, ее можно закрывать.

Добавлено (10.07.2011, 22:34)
---------------------------------------------
zodiak, ты не понял-surf2 должен был использоваться как массив указателей на указатели.

Добавлено (10.07.2011, 22:37)
---------------------------------------------
Тьфу ты, то есть как массив указателей.

zodiakДата: Воскресенье, 10 Июля 2011, 22:40 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Quote (Kornival)
zodiak, ты не понял-surf2 должен был использоваться как массив указателей на указатели.


Ну я ж не экстрасенс. Та бы в вопросе и написал.


Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net
KornivalДата: Пятница, 15 Июля 2011, 13:21 | Сообщение # 5
The Witcher
Сейчас нет на сайте
Еще одна проблема: если в функции SDL_SetVideoMode включить флаг SDL_OPENGL, то перехватить событие изменения размера окна не получается. Делаю так:
Code

if(SDL_PollEvent(&event))
          if(event.resize.type == SDL_VIDEORESIZE) какие-то там команды;

Если флаг SDL_OPENGL убрать все работает отлично. Кто-нибудь сталкивался с таким?

Добавлено (15.07.2011, 13:21)
---------------------------------------------
Тема уже не актуальна, оказалось у меня проблемы с ОС.

Сообщение отредактировал Kornival - Вторник, 12 Июля 2011, 21:23
nilremДата: Пятница, 15 Июля 2011, 13:26 | Сообщение # 6
Просветленный разум
Сейчас нет на сайте
Quote (Kornival)
оказалось у меня проблемы с ОС.


С драйверами у тебя проблемы.


Windmill 2

WindMill 2D Game Engine
KornivalДата: Пятница, 15 Июля 2011, 13:42 | Сообщение # 7
The Witcher
Сейчас нет на сайте
Quote (nilrem)
С драйверами у тебя проблемы.

Возможно, хотя моя 7-ка поставлялась вместе с ноутбуком...
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг