mch*_*hen 4 c++ return operators stringstream
例如:
std::stringstream formatMemUsage(...) {
std::stringstream ss ...
...
return ss << "MB"; // Error here
}
Run Code Online (Sandbox Code Playgroud)
导致错误no suitable user-defined conversion from "std::basic_ostream<char, std::char_traits<char>>" to "std::stringstream" exists.
我可以将return语句分成2个语句ss << "MB"; return ss;,错误消失了 - 为什么?
(使用MSVC++ 2010)
因为您要返回最后一个评估语句.考虑一下这实际上是做什么的:
return ss << "MB";
Run Code Online (Sandbox Code Playgroud)
相当于:
return operator<<(ss, "MB");
Run Code Online (Sandbox Code Playgroud)
operator<<在这种情况下,返回类型是,如您所见,std::ostream&- 不是std::stringstream您想要的.