在C++中,您可以获取无符号int的指针,并将其转换为指向有符号int (reinterpret_cast)的指针。unsigned int a = 200;我需要将生成在着色器中的int存储为unsigned int,这样才能将其写入带有无符号整数内部格式的纹理在GLSL中是否有类似于C++的reinterpret_cast的替代方案?
我读了很多关于C++类型转换的书,我开始感到困惑了,因为我一直使用C风格的类型转换。我读到过在C++中应该避免使用C样式转换,而且reinterpret_cast非常非常危险,不应该在有其他选择的情况下使用。与不使用reinterpret_cast相反,我在他们的示例代码中看到它在MSDN上使用了很多次。这让我问了我的第一个问题,什么时候可以使用reinterpret_cast?lParam) switch (Msg) case WM_CREATE:
base_object* b) derived_object* d = (derived_object*) b; /* Downcast */但是,如果我们正在编写使用这样的C-API的新C++代码,我们是应该继续使用C风格的强制转换,还是应该更倾向于使用C++强制转换?如果是后者,我们应该使用哪种类型的C++强制转换来模拟C语言的向下转换?一开始,我认为reinterpret_cast是合适的:
derived_object* d = reinterpret_cast</em