我有一个名为Shader的结构,它包含以下信息:
struct Shader {
enum ValueType{ VT_Attribute, VT_Uniform, VT_Varying };
GLuint Memory;
GLenum Type;
char* Source;
char* Name;
std::map< Shader::ValueType, float* > Values;
};
然而,如果我做了类似的事情:
glShaderSource( shaderMem, 1, &shader.Source, NULL );
我收到以下错误:
error: invalid conversion from 'char* const*' to 'const char**'
为什么会这样?
答案 0 :(得分:4)
这是因为此时shader
为const
。假设glShaderSource
没有尝试写第三个参数的内容,那么你可以const_cast
离开const
:
glShaderSource( shaderMem, 1, const_cast< char** >( &shader.Source ), NULL );