为C+中的图形创建类+;使用SDL 我试图为C++中的一个洞穴故事克隆创建一个游戏窗口,所以首先,我创建了下面的头文件,然后,我创建了这个类文件。当我完成这个类时,我一直收到一个错误,即参数类型不完整,参数类型为sdl_window和sdl_render。如果有人能帮我找出我做错了什么

为C+中的图形创建类+;使用SDL 我试图为C++中的一个洞穴故事克隆创建一个游戏窗口,所以首先,我创建了下面的头文件,然后,我创建了这个类文件。当我完成这个类时,我一直收到一个错误,即参数类型不完整,参数类型为sdl_window和sdl_render。如果有人能帮我找出我做错了什么,c++,visual-studio,sdl,C++,Visual Studio,Sdl,图形.h #ifndef GRAPHICS.h #define GRAPHICS.h struct SDL_window; struct SDL_render; class Graphics { public: Graphics(); ~Graphics(); private: SDL_window* window = NULL; SDL_render* render = NULL; }; #endif G

图形.h

#ifndef GRAPHICS.h

#define GRAPHICS.h

struct SDL_window;
struct SDL_render;

class Graphics {
    public:
        Graphics();
        ~Graphics();
    private:
        SDL_window* window = NULL;
        SDL_render* render = NULL;
};

#endif
Graphics.cpp

#include <SDL.h>

#include "graphics.h"


/* Graphics class
* Holds all information dealing with graphics for the game
*/

Graphics::Graphics() {
    SDL_CreateWindowAndRenderer(640, 480, 0, &window, &render);
    SDL_SetWindowTitle(window, "Cavestory");
}

Graphics::~Graphics() {
    SDL_DestroyWindow(window);
}
#包括
#包括“graphics.h”
/*图形类
*保存所有与游戏图形相关的信息
*/
Graphics::Graphics(){
SDL_CreateWindowandRender(640、480、0、&window和&render);
SDL_SetWindowTitle(窗口,“CaveStorey”);
}
图形::~Graphics(){
SDL_窗口(窗口);
}

问题在于,您正在声明与SDL类型无关的自己的类型。重写类以使用适当的类型:

#include <SDL.h>

class Graphics {
  public:
    Graphics();
    ~Graphics();
  private:
    SDL_Window *   window = nullptr;
    SDL_Renderer * render = nullptr;
};
#包括
类图形{
公众:
图形();
~Graphics();
私人:
SDL_Window*Window=nullptr;
SDL_渲染器*render=nullptr;
};

问题在于,您正在声明与SDL类型无关的自己的类型。重写类以使用适当的类型:

#include <SDL.h>

class Graphics {
  public:
    Graphics();
    ~Graphics();
  private:
    SDL_Window *   window = nullptr;
    SDL_Renderer * render = nullptr;
};
#包括
类图形{
公众:
图形();
~Graphics();
私人:
SDL_Window*Window=nullptr;
SDL_渲染器*render=nullptr;
};

@johnymop这是不正确的。他可以在没有完整定义的情况下向前声明结构和引用指针。你确定你不是指
struct SDL\u Window
?您的前向声明中的大小写与实际的SDL结构不匹配。@AustinBrunkHost Ok。错过了。顺便说一句,为什么不使用?它提供了与SDL基本相同的功能,但用C++编写,而不是C.@ TimStubbiger-I,实际上我不知道我的朋友告诉我关于SDL的SFML,所以我尝试了一下。我会调查的,谢谢你。@Johnnymapp,那是不正确的。他可以在没有完整定义的情况下向前声明结构和引用指针。你确定你不是指
struct SDL\u Window
?您的前向声明中的大小写与实际的SDL结构不匹配。@AustinBrunkHost Ok。错过了。顺便说一句,为什么不使用?它提供了与SDL基本相同的功能,但用C++编写,而不是C.@ TimStubbiger-I,实际上我不知道我的朋友告诉我关于SDL的SFML,所以我尝试了一下。我会调查的,谢谢。