gpt4 book ai didi

c++ - 无法将 'std::basic_istream' 左值绑定(bind)到 'std::basic_istream&&'

转载 作者:太空宇宙 更新时间:2023-11-04 09:39:25 27 4
gpt4 key购买 nike

我有这个 c++ 代码片段,它在 visual studio 中运行良好,但在 gcc 中出错。欢迎就如何使其发挥作用提出任何建议?

  template <typename ConvertType>

inline bool Parse(const std::string& input, ConvertType& output)
{
std::stringstream stream(input);
stream.imbue(std::locale::classic());
return (stream >> output) != NULL;
}

我收到这个错误:

./Configuration/Option.h:32:38: error: cannot bind 'std::basic_istream' lvalue to 'std::basic_istream&&'/usr/include/c++/4.6/istream:852:5: error:   initializing argument 1 of 'std::basic_istream& std::operator>>(std::basic_istream&&, _Tp&) [with _CharT = char, _Traits = std::char_traits, _Tp = Color]'

最佳答案

(stream >> output) 返回对流的引用,它不能与 NULL 进行比较。你可以简单地返回

return (stream >> output);

这将通过调用 operator void*() const(C++11 中的 explicit operator bool() const)来测试流,它会调用 fail() 函数来测试操作是否成功。

关于c++ - 无法将 'std::basic_istream<char>' 左值绑定(bind)到 'std::basic_istream<char>&&',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22985936/

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