0

我有一个名为 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**'

为什么会这样?

4

1 回答 1

4

它发生是因为shaderconst那个时候。假设glShaderSource不会尝试写入其第三个参数的内容,那么您可以const_cast离开const

glShaderSource( shaderMem, 1, const_cast< char** >( &shader.Source ), NULL );
于 2012-05-21T02:28:40.293 回答