2016-04-10 2 views
0

Я новичок в sdl. Я в процессе создания игры в блэкджек. Я хочу создать массив текстур. Мне было интересно, сможет ли кто-нибудь помочь мне. Вот что я пытался сделать:Структура массива SDL?

// array of textures for the extra player cards 
    SDL_Texture *hitCardsText[] = { NULL }; 

// this does not give me errors but i dont know if it is right 

    hitCardsText[0] = loadTexture(ren, cards[dynamicPlayerCards[0]]); 
    hitCardsText[1] = loadTexture(ren, cards[dynamicPlayerCards[1]]); 

// i get an error here 

SDL_DestroyTexture(hitCardsText[0]); 
SDL_DestroyTexture(hitCardsText[1]); 

я получаю эту ошибку, когда я, указанную выше в коде (мой файл называется introSDL.exe кстати):

исключения необработанного на 0x6C78CE9A (SDL2. dll) в файле introSDL.exe: 0xC0000005: место чтения нарушения доступа 0x00000050.

ответ

2

Вы пишите из своего массива.

SDL_Texture *hitCardsText[] = { NULL }; 

Это только 1 элемент. Если вам нужно больше, вам нужно добавить еще несколько элементов в список инициализаторов или указать точную сумму в квадратных скобках.

Если вы хотите массив с динамическим размером, используйте std::vector.

std::vector<SDL_Texture*> hitCardsText; 
hitCardsText.push_back(loadTexture(ren, cards[dynamicPlayerCards[0]])); 
hitCardsText.push_back(loadTexture(ren, cards[dynamicPlayerCards[1]])); 
+0

благодарит за ответ. То, что вы говорите, имеет смысл, но теперь я получаю исключение Unhandled в 0x779DDAD8 в introSDL.exe: исключение Microsoft C++: std :: bad_alloc в ячейке памяти 0x0018EFE4 на hitCardsText.push_back (loadTexture (ren, cards [dynamicPlayerCards [0]])); – soso

Смежные вопросы