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

标签 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 );

我收到以下错误:

错误:从“char* const*”到“const char**”的无效转换

为什么会这样?

最佳答案

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

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

关于c++ - 如何通过地址传递 char 指针以接受 char**?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10678877/

相关文章:

c++ - Qt QLine类扩展

c++ - wxWidgets - wxFilePickerCtrl 抛出 GLib-CRITICAL 错误

php - XML、HTML、PHP,使用引号编写优雅、易于阅读的字符串

Java:不带 toString 的 StringBuffer 到 byte[]

c - 以下代码对于结构指针有何作用?

java - 获取音频输出设备(扬声器、耳机)的 GUID

string - 二元运算符 '==' 无法应用于 Swift 2 Xcode 7 中类型 'String!' 和 '[String]' 的操作数

c - c代码中指向函数的指针

c - 读取输入并将其放入字符指针

c++ - 如何对两个数组进行排序,同时保持它们连接到同一元素?