Visual Studio 2019中重载operator<<函数触发C4716编译错误(提示‘operator<<’必须返回值),寻求解决帮助
解决Visual Studio 2019中C4716编译错误:‘operator<<’ must return value
嘿,这个问题其实很好解决——你写的operator<<函数声明要返回ostream&类型,但函数体里压根没返回任何值,这就触发了C4716错误。
在C++里,流插入运算符operator<<之所以能支持链式调用(比如我们常写的cout << "hello" << "world"),核心就是它会返回当前的流对象引用,这样后续的<<操作才能继续在同一个流上执行。
你只需要在函数末尾加一行返回语句,把传入的stream参数返回回去就行,修正后的代码是这样的:
// Friend function to print the towers to stream ostream& operator<<(ostream& stream, const TheGame& game) { stream << "Tower #0:" << game.towers[0] << endl << "Tower #1:" << game.towers[1] << endl << "Tower #2:" << game.towers[2] << endl ; return stream; // 补上这行返回语句就搞定了 }
这样既满足了函数的返回类型要求,也符合流运算符重载的标准规范,链式调用也能正常工作啦。
内容的提问来源于stack exchange,提问作者Skid65
相关产品推荐
相关产品推荐

