创建 SDL_Window unique_ptr
Create SDL_Window unique_ptr
对于我的游戏,我试图在 SDL_GL_CreateContext();
的帮助下使用 unique_ptr
创建一个 SDL_GLContext
我已经为我的 unique_ptr
创建了一个自定义删除器
struct sdl_deleter
{
void operator()(SDL_Window *p) const { SDL_DestroyWindow(p); }
void operator()(SDL_Renderer *p) const { SDL_DestroyRenderer(p); }
void operator()(SDL_Texture *p) const { SDL_DestroyTexture(p); }
};
class MainGame{
std::unique_ptr<SDL_Window, sdl_deleter> _window;
public:
run();
}
MainGame::MainGame() : _window(nullptr, sdl_deleter), _screenWidth(1024), _screenHeight(768), _gameState(GameState::PLAY)
{
}
void MainGame::run(){
SDL_Init(SDL_INIT_EVERYTHING);
_window.reset(SDL_CreateWindow("Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, _screenWidth, _screenHeight, SDL_WINDOW_OPENGL));
}
我收到一条错误消息,指出不允许使用该类型,我不知道如何解决。
Error C2664 'std::unique_ptr<SDL_Window,sdl_deleter>::unique_ptr(const std::unique_ptr<SDL_Window,sdl_deleter> &)': cannot convert argument 2 from 'void (__cdecl *)(SDL_Window *)' to 'const _Dx &'
错误在指针初始值设定项处:
: _window(nullptr, sdl_deleter)
这里 _window(nullptr, sdl_deleter)
sdl_deleter
是一个类型名称,而预期是一个对象。您应该提供一个实际的删除器对象,例如_window(nullptr, sdl_deleter{})
或干脆让它由 unique_ptr
本身默认构造:_window(nullptr)
.
此外,SDL_GL_CreateContext
需要一个 SDL_Window *
,而你用 unique_ptr
喂它。你可能想要这个:SDL_GL_CreateContext(_window.get())
.
对于我的游戏,我试图在 SDL_GL_CreateContext();
unique_ptr
创建一个 SDL_GLContext
我已经为我的 unique_ptr
struct sdl_deleter
{
void operator()(SDL_Window *p) const { SDL_DestroyWindow(p); }
void operator()(SDL_Renderer *p) const { SDL_DestroyRenderer(p); }
void operator()(SDL_Texture *p) const { SDL_DestroyTexture(p); }
};
class MainGame{
std::unique_ptr<SDL_Window, sdl_deleter> _window;
public:
run();
}
MainGame::MainGame() : _window(nullptr, sdl_deleter), _screenWidth(1024), _screenHeight(768), _gameState(GameState::PLAY)
{
}
void MainGame::run(){
SDL_Init(SDL_INIT_EVERYTHING);
_window.reset(SDL_CreateWindow("Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, _screenWidth, _screenHeight, SDL_WINDOW_OPENGL));
}
我收到一条错误消息,指出不允许使用该类型,我不知道如何解决。
Error C2664 'std::unique_ptr<SDL_Window,sdl_deleter>::unique_ptr(const std::unique_ptr<SDL_Window,sdl_deleter> &)': cannot convert argument 2 from 'void (__cdecl *)(SDL_Window *)' to 'const _Dx &'
错误在指针初始值设定项处:
: _window(nullptr, sdl_deleter)
这里 _window(nullptr, sdl_deleter)
sdl_deleter
是一个类型名称,而预期是一个对象。您应该提供一个实际的删除器对象,例如_window(nullptr, sdl_deleter{})
或干脆让它由 unique_ptr
本身默认构造:_window(nullptr)
.
此外,SDL_GL_CreateContext
需要一个 SDL_Window *
,而你用 unique_ptr
喂它。你可能想要这个:SDL_GL_CreateContext(_window.get())
.