向接收指针参数的函数传递参数时能否进行类型转换?
向接收指针参数的函数传递参数时能否进行类型转换?
咱们先聊个OpenGL开发里特别常见的场景,你大概率也遇见过:
你会用到像void glUseProgram(GLuint program);这类函数,它们的参数都是GLuint无符号整数类型;但尴尬的是,OpenGL压根没提供glGetUint这种专门获取无符号整数的接口,你要拿相关参数的话,只能用glGetInteger这个针对有符号整数的函数。
就比如你写了这么一段代码:
class Foo { public: Foo() { glGetIntegerv(GL_CURRENT_PROGRAM, &program); } private: GLuint program; };
这里就藏着个疑问:glGetIntegerv的第二个参数要求传入GLint*类型的指针,但我们传的是GLuint*类型的指针(也就是&program),这种给接收指针参数的函数传递不同类型指针的情况,到底能不能直接做类型转换呢?
备注:内容来源于stack exchange,提问作者Gregorio Litenstein
相关产品推荐
相关产品推荐

