Тема: Альтернатива reinterpret_cast для колбека GLFW
Є клас, де прописана ініціалізація вікна за допомогою менеджера вікон GLFW, ось так:
void GenGLFWWindow::init_glfw_window()
{
glfwInit();
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);
glfw_window = glfwCreateWindow(width, height, window_name.c_str(), nullptr,
nullptr);
glfwSetWindowUserPointer(glfw_window, this);
glfwSetFramebufferSizeCallback(glfw_window, framebuffer_resize_callback);
}А ще є статичний метод класу для відповідного колбека:
void GenGLFWWindow::framebuffer_resize_callback(GLFWwindow* window, int width,
int height)
{
auto app
= reinterpret_cast<GenGLFWWindow*>(glfwGetWindowUserPointer(window));
app->framebuffer_resized = true;
}Я розумію, що GLFW написана на С, але чи можна в цьому випадку замінити
reinterpret_cast на більш безпечну альтернативу? Чи тут це необхідне зло?
Цей приклад з офіційного посібника Vulkan, я лише розбив його на класи для зручності.