Я выполняю рефакторинг своего кода 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 (void в приведенном выше коде).
typedef struct SDL_Window SDL_Window;
typedef void *SDL_GLContext;
Я бы действительно хотел, чтобы оно было в той же форме, что и shared_ptr<SDL_Window>
, но, поскольку SDL_GLContext
имеет тип указателя, это невозможно. Вы можете видеть, что я использовал void как тип, но если я хочу, чтобы тип был видимым, как я могу «изменить уровень» типа указателя, чтобы он не был указателем типа? Я знаю, как сделать это для переменных, но как мне это сделать с типами?