C++ 错误:声明‘;数据’;作为引用数组
C++应用程序代码使用GCC4.1编译良好。现在我将GCC版本升级到了4.4X,我得到了一个错误C++ 错误:声明‘;数据’;作为引用数组,c++,arrays,gcc,reference,most-vexing-parse,C++,Arrays,Gcc,Reference,Most Vexing Parse,C++应用程序代码使用GCC4.1编译良好。现在我将GCC版本升级到了4.4X,我得到了一个错误 error: declaration of ‘data’ as array of references 代码: 编译器不应将此行视为函数声明。在这种情况下,如何应用正确的语法?一个选项是将std::string result(更改为std::string result=std::string((保持行的其余部分不变) 我认为这是一个编译器错误,因为&data[0]+data.size()不能出现在
error: declaration of ‘data’ as array of references
代码:
编译器不应将此行视为函数声明。在这种情况下,如何应用正确的语法?一个选项是将
std::string result(
更改为std::string result=std::string(
(保持行的其余部分不变)
我认为这是一个编译器错误,因为&data[0]+data.size()
不能出现在声明中,但我以前见过(它在解析时过早地错误地将行标记为声明)
这个版本还解决了gcc 8.3中的错误,添加了一组额外的括号:
std::string result ( (base64_enc(&data[0])), base64_enc(&data[0] + data.size()) );
// ^ ^
您想实现什么?是否通过引用传递数组?它只是将给定的字节序列编码为base64字符串
std::string result(base64_enc(&data[0]),
base64_enc(&data[0] + data.size()));
std::string result ( (base64_enc(&data[0])), base64_enc(&data[0] + data.size()) );
// ^ ^