}’ 到 ‘bool’”-6ren"> }’ 到 ‘bool’”-我正在尝试从源代码编译 libgtextutils(fastxtoolkit 需要)。 “./configure”命令运行良好,但随后的“make”命令产生了一个我无法解决的错误。 text_line-6ren">
gpt4 book ai didi

c++ - make 失败,返回错误 "cannot convert ‘std::istream {aka std::basic_istream}’ 到 ‘bool’”

转载 作者:可可西里 更新时间:2023-11-01 18:16:58 24 4
gpt4 key购买 nike

我正在尝试从源代码编译 libgtextutils(fastxtoolkit 需要)。 “./configure”命令运行良好,但随后的“make”命令产生了一个我无法解决的错误。

text_line_reader.cpp: In member function ‘bool TextLineReader::next_line()’:
text_line_reader.cpp:47:9: error: cannot convert ‘std::istream {aka std::basic_istream<char>}’ to ‘bool’ in return
return input_stream ;
^~~~~~~~~~~~
make[3]: *** [text_line_reader.lo] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

我使用的是 Mac,OSX 10.11.6 (Intel)

非常感谢任何可能解决此问题的建议。

最佳答案

参见 Porting to GCC 6指南,它将此记录为由于 GCC 6 默认为 C++14 模式而不是 C++03 模式而必须处理的更改之一:

Cannot convert 'std::ostream' to 'bool'

As of C++11, iostream classes are no longer implicitly convertible to void* so it is no longer valid to do something like:

bool valid(std::ostream& os) { return os; }

Such code must be changed to convert the iostream object to bool explicitly, e.g. return (bool)os; or return static_cast<bool>(os);

另一种选择是显式使用 -std=c++03在你的编译器标志中以 C++03 模式编译,但最好修复代码。上面给出的修复将使代码与任何 C++ 版本兼容。

关于c++ - make 失败,返回错误 "cannot convert ‘std::istream {aka std::basic_istream<char>}’ 到 ‘bool’”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38659115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com