You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 16:37:34