Когда я пытаюсь скомпилировать этот код, я получаю сообщение об ошибке:
Переменная ‘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;
};
Это означает, что вы не инициализировали свой 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
);
Предоставлено Бенджамином Линдли.
Других решений пока нет …