我有一段代码可以将文本文件内容加载到char *中。 (我知道这是C ++和C的奇怪组合,但请耐心等待。)
std::ifstream filestream1(filename);
std::string str1(std::istreambuf_iterator<char>(filestream1),
(std::istreambuf_iterator<char>()) );
GLchar * code1 = (GLchar *) malloc(sizeof(GLchar) * str1.length());
strcpy(code1, str1.c_str());
之前我在这个版本的行之后得到了str1变量上的“表达musy have class type”错误:
std::string str1(std::istreambuf_iterator<char>(filestream1),
std::istreambuf_iterator<char>() );
//str1 causes "expression must have class type" errors
显然,添加额外的括号(对我来说似乎是多余的,说实话),解决了问题。问题是,一个和另一个究竟发生了什么变化?这不是那些“声明一个函数而不是实例化一个类”的错误之一,是吗?我的意思是,甚至可以在函数调用中声明一个没有名称的函数,并且没有[]像lambda一样?