gpt4 book ai didi

c++ - 这个用于 SDL 类型的智能指针包装器安全吗?

转载 作者:太空狗 更新时间:2023-10-29 20:10:46 26 4
gpt4 key购买 nike

我考虑过使用类似下面的东西,这样我就不必记得在方法末尾显式调用破坏函数:

#include <iostream>
#include <SDL2/SDL.h>
#include <memory>

int main()
{
SDL_Init(SDL_INIT_VIDEO);

std::unique_ptr<SDL_Window, decltype((SDL_DestroyWindow))>
win { SDL_CreateWindow("asdf", 100, 100, 640, 480, SDL_WINDOW_SHOWN),
SDL_DestroyWindow };
if (!win.get())
{
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_CreateWindow Error: %s",
SDL_GetError());
return 1;
}

SDL_Quit();
}

我不确定这是否是最佳方法。我担心这不会做我想要它做的事情,即使它看起来很简单。这种方法是否存在任何细微的错误?

最佳答案

引入一个新的范围,你应该没问题:

int main()
{
SDL_Init(SDL_INIT_VIDEO);

{
std::unique_ptr<SDL_Window, decltype((SDL_DestroyWindow))>
win { SDL_CreateWindow("asdf", 100, 100, 640, 480, SDL_WINDOW_SHOWN),
SDL_DestroyWindow };
if (!win.get())
{
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_CreateWindow Error: %s",
SDL_GetError());
return 1;
}
} // win destroyed before SQL_Quit

SDL_Quit();
}

关于c++ - 这个用于 SDL 类型的智能指针包装器安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37192436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com