如何通过地址传递char指针以接受char **?

时间:2012-05-21 02:25:16

标签: c++ string pointers pass-by-reference

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

为什么会这样?

1 个答案:

答案 0 :(得分:4)

这是因为此时shaderconst。假设glShaderSource没有尝试写第三个参数的内容,那么你可以const_cast离开const

glShaderSource( shaderMem, 1, const_cast< char** >( &shader.Source ), NULL );