2012-05-21 70 views
0

我有一個結構,被稱爲着色器,其中包含以下信息:如何通過地址傳遞一個字符指針被接受爲char **?

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

Sscce.org。你確定它在抱怨第三個參數嗎? –

回答

4

發生這種情況是因爲shaderconst。假設glShaderSource不會試圖寫它的第三個參數的內容,那麼你可以const_castconst遠:

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

我會接受你的答案,但我還剩8分鐘。你得到金星,謝謝:) – zeboidlund

+0

@blissfreak,覺得你忘了獎勵它:) –

+0

比從未更好的遲到! – zeboidlund

相關問題