C++SDL,变量在未初始化的情况下被使用
C++ SDL, variable is being used without being initialized
当我试图编译此代码时,我得到一个错误:
变量"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
);
由Benjamin Lindley提供。
相关文章:
- 如何在不知道属性具有哪些构造函数的情况下初始化属性?
- 在没有库的情况下初始化 OpenGL
- 在没有构造函数的情况下初始化 const c++ 类
- 默认情况下初始化时 POD 是否给予特殊处理 (C++14)?
- 为什么默认情况下初始化局部变量
- 有没有一种方法可以在不使用std ::移动的情况下初始化类构建类的类
- 如果在没有 new 运算符的情况下初始化,C++是否将类对象视为值类型
- 如何在没有循环的情况下初始化 std::vector
- 如何在不使用指针的情况下初始化具有可变大小的 2D 数组
- 如何在给定包含类的实例的情况下实例化嵌套类
- 在不使用"new"的情况下实例化参数参数中的对象
- 在不使用动态数组的情况下初始化数组时出现问题
- 如何在没有初始化对象的情况下初始化对象的管理器shared_ptr?
- 在没有 new 关键字的情况下初始化C++对象的内存从何而来
- 如何在没有main的情况下初始化谷歌测试
- 在下面的代码中,如何在不使用伪值的情况下初始化类成员
- 如何在不使用C++11功能的情况下初始化类中的数组
- 如何在<int>没有循环的情况下初始化值为 {1,1,1,...,1} 的向量 v(1000)C++?
- 在没有实例变量的情况下初始化派生类中的"inherited static members"
- wxWidgets:如何在不使用宏和不进入主应用程序循环的情况下初始化wxApp