![](/img/trans.png)
[英]ostream and operator std::basic_string<char, std::char_traits<char>, std::allocator<char>>?
[英]'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str': non-standard syntax; use '&' to create a pointer to member
我正在嘗試創建一個可以讀取和編譯opengl頂點和片段着色器文件的函數,但是我收到了這個錯誤:
'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str': non-standard syntax; use '&' to create a pointer to member
我不太清楚如何解決它。 這是我的代碼:
GLuint shader_load(const GLchar* vertex, const GLchar* fragment) {
std::string ver = file_read_all(vertex);
std::string frag = file_read_all(fragment);
const GLchar* verCode = ver.c_str;
const GLchar* fragCode = frag.c_str;
GLuint program;
GLuint verShader, fragShader;
GLint success;
GLchar log[512];
verShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(verShader, 1, &verCode, NULL);
glCompileShader(verShader);
glGetShaderiv(verShader, GL_COMPILE_STATUS, &success);
if (!success) {
glGetShaderInfoLog(verShader, 512, NULL, log);
std::cout << "Failed to compile Vertex Shader\n" << log << std::endl;
return NULL;
}
fragShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragShader, 1, &fragCode, NULL);
glCompileShader(fragShader);
glGetShaderiv(fragShader, GL_COMPILE_STATUS, &success);
if (!success) {
glGetShaderInfoLog(fragShader, 512, NULL, log);
std::cout << "Failed to compile Fragment Shader\n" << log << std::endl;
return NULL;
}
program = glCreateProgram();
glAttachShader(program, verShader);
glAttachShader(program, fragShader);
glLinkProgram(program);
glGetProgramiv(program, GL_LINK_STATUS, &success);
if (!success)
{
glGetProgramInfoLog(program, 512, NULL, log);
std::cout << "Failed to Link Shader\n" << log << std::endl;
}
glDeleteShader(verShader);
glDeleteShader(fragShader);
}
我在Windows 10上使用Visual Studio Community 2015
std::string::c_str
是一個成員函數,如果你想調用它,你應該添加()
。
const GLchar* verCode = ver.c_str();
~~
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.