C ++ SDL, переменная используется без инициализации

Когда я пытаюсь скомпилировать этот код, я получаю сообщение об ошибке:

Переменная ‘screen’ используется без инициализации.

Кто-нибудь может сказать мне, почему?

class Board
{
public:
int board[BOARD_HEIGHT][BOARD_WIDTH];
void drawboard(SDL_Surface *screen) {
for (int i = 0; i < BOARD_HEIGHT; i++) {
for (int j = 0; j < BOARD_WIDTH; j++) {
if (i == 0 || i == BOARD_HEIGHT || j == BOARD_WIDTH || j == 0) {
DrawRectangle(screen,(j*BLOCK_HW),(i*BLOCK_HW) , BLOCK_HW, BLOCK_HW, 0x000000FF, 0x000000FF);
board[i][j] = FILLED;
}
}
}
}

int main(int argc, char **argv)
{
SDL_Surface *screen;
Board board;
board.drawboard(screen);
SDL_FreeSurface(screen);
SDL_Quit();
return 0;
};

0

Решение

Это означает, что вы не инициализировали свой screen переменная ниже.

SDL_Surface *screen;

Вы должны использовать SDL_CreateRGBSurface.

SDL_Surface *screen = SDL_CreateRGBSurface(...);

Обновить:

Если это для основной поверхности дисплея, вы должны использовать SDL_CreateWindow или же SDL_CreateWindowAndRenderer

Пример:

SDL_Window *window;                    // Declare a pointer

SDL_Init(SDL_INIT_VIDEO);              // Initialize SDL2

// Create an application window with the following settings:
window = SDL_CreateWindow(
"An SDL2 window",                  // window title
SDL_WINDOWPOS_UNDEFINED,           // initial x position
SDL_WINDOWPOS_UNDEFINED,           // initial y position
640,                               // width, in pixels
480,                               // height, in pixels
SDL_WINDOW_OPENGL                  // flags - see below
);

Предоставлено Бенджамином Линдли.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]