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