c++ - 向下指针键入与 shared_ptr 一起使用的级别

标签 c++ c++11 syntax shared-ptr

我重构了我的 SDL2 代码以利用 C++11 的一些新功能并让一些 shared_ptr 处理清理。然后我偶然发现了这个问题。现在我在创建 openGL 上下文时写这个。

auto window = shared_ptr<SDL_Window>(SDL_CreateWindow(
        "Opengl stuff", 0, 0, width, height, windowFlags),
        SDL_DestroyWindow);


auto context = shared_ptr<void>(
        SDL_GL_CreateContext(window.get()),
        SDL_GL_DeleteContext);

问题是当我想赋值给变量上下文时,我找不到正确的东西写在 shared_ptr 的括号中(上面代码中为空)。

typedef struct SDL_Window SDL_Window;
typedef void *SDL_GLContext;

我真的希望它的形式与 shared_ptr<SDL_Window> 相同, 但自 SDL_GLContext是指针类型是不可能的。你可以看到我所做的是使用 void 作为类型,但是如果我希望类型可见,我如何将指针类型“更改级别”为非指针类型?我知道如何对变量执行此操作,但我如何对类型执行此操作?

最佳答案

你可能正在寻找

std::remove_pointer<SDL_GLContext>::type

如果 SDL_GLContextvoid* 的别名(或者通常是 T* 对于某些 T),那么上面的结构是 void(或者通常是 T)的别名。

关于c++ - 向下指针键入与 shared_ptr 一起使用的级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52205167/

相关文章:

c++ - 在 Qt Creator 中使用 libc++ 而不是 libstdc++

c++ - 为什么我的函数不返回正确的输出?

c++ - 将(隐式)boost shared_ptr<T> 转换为 shared_ptr<const T>

c++ - 版本控制可执行文件并在运行时修改它

c++ - 如何将目录路径转换为唯一的数字标识符 (Linux/C++)?

c++ - 添加 : in front of variable gives wrong result

c++ - 从其他容器中辨别 smart_pointer 的模板函数

python - 向后移植函数修饰符到 python2.1

python - 我不断收到语法错误,不知何故,由于函数定义末尾的冒号

php - 在 PHP 中使用 PDO 的正确方法是什么?