2015-12-31 44 views
0

使用變量當我嘗試編譯這段代碼,我得到一個錯誤:C++ SDL,被不被初始化

The variable 'screen' is being used without being initialized.

誰能告訴我爲什麼?

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; 
}; 

回答

3

這意味着你沒有低於initiallize您screen變量。

SDL_Surface *screen; 

您應該使用SDL_CreateRGBSurface

SDL_Surface *screen = SDL_CreateRGBSurface(...); 

更新:

如果這是主顯示面,則應該使用SDL_CreateWindowSDL_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 
); 

本傑明林德利提供。

+0

如果這是主顯示面,則應該使用['SDL_CreateWindow'](https://wiki.libsdl.org/SDL_CreateWindow)或['SDL_CreateWindowAndRenderer'](https://wiki.libsdl.org/ SDL_CreateWindowAndRenderer)。 –