错误:控制到达非 void 函数的末尾

2023-11-30

我在学习C++我从教科书上复制了这段代码,在编译代码时,最后出现错误。错误说:

控制到达非 void 函数的末尾

它位于代码的末尾:

#include "ComplexNumber.hpp"
#include <cmath>

ComplexNumber::ComplexNumber()
{
mRealPart = 0.0;
mImaginaryPart = 0.0;
}

ComplexNumber::ComplexNumber(double x, double y)
{
mRealPart = x;
mImaginaryPart = y;
}

double ComplexNumber::CalculateModulus() const
{
return sqrt(mRealPart*mRealPart+
            mImaginaryPart*mImaginaryPart);
}
double ComplexNumber::CalculateArgument() const
{
return atan2(mImaginaryPart, mRealPart);
}

ComplexNumber ComplexNumber::CalculatePower(double n) const
{
double modulus = CalculateModulus();
double argument = CalculateArgument();
double mod_of_result = pow(modulus, n);
double arg_of_result = argument*n;
double real_part = mod_of_result*cos(arg_of_result);
double imag_part = mod_of_result*sin(arg_of_result);
ComplexNumber z(real_part, imag_part);
return z;
}

ComplexNumber& ComplexNumber::operator=(const ComplexNumber& z)
{
mRealPart = z.mRealPart;
mImaginaryPart = z.mImaginaryPart;
return *this;
}

ComplexNumber ComplexNumber::operator-() const
{
ComplexNumber w;
w.mRealPart = -mRealPart;
w.mImaginaryPart = -mImaginaryPart;
return w;
}

ComplexNumber ComplexNumber::operator+(const ComplexNumber& z) const
{
ComplexNumber w;
w.mRealPart = mRealPart + z.mRealPart;
w.mImaginaryPart = mImaginaryPart + z.mImaginaryPart;
return w;
}

std::ostream& operator<<(std::ostream& output,
                     const ComplexNumber& z)
{
output << "(" << z.mRealPart << " ";
if (z.mImaginaryPart >= 0.0)
{
    output << " + " << z.mImaginaryPart << "i)";
}
else
{
    output << "- " << -z.mImaginaryPart << "i)";
}
} //-------->>>>**"Control Reaches end of non-void function"**

Well operator<<被定义为返回std::ostream&:

std::ostream& operator<<(std::ostream& output, const ComplexNumber& z)
^^^^^^^^^^^^^

但你没有 return 语句,这是未定义的行为并且意味着你不能依赖程序的行为,结果是不可预测的。看起来你应该有:

return output ;

在函数的末尾。我们可以从 C++ 标准草案部分看到这是未定义的行为6.6.3return 声明第 2 段内容如下:

[...] 从函数末尾流出相当于没有值的返回;这会导致返回值函数中出现未定义的行为。 [...]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:控制到达非 void 函数的末尾 的相关文章

随机推荐

  • WCF 回调服务与 netTcp 绑定在 10 分钟后超时

    我正在使用 WCF 使用回调合约 和 netTcpBinding 创建一个聊天应用程序 我将该服务托管为 Windows 服务并从其他计算机访问它 通过客户端应用程序 我现在面临的问题是客户端连接在之后进入故障状态 10 分钟 似乎发生了某
  • 在特定位置添加字典元素

    考虑以下代码 var myDict new Dictionary
  • 如何保持 Tomcat 会话?

    我有一个 JSP 网页 每 1 分钟刷新一次 每次刷新时 都会检查会话对象的有效性 当 tomcat Web 服务器重新启动时 会话消失 并且当页面刷新时 它显示 无效 有人能解决我的问题吗 查看 Tomcat 配置文件中的配置 该文档位于
  • 在引导程序日期时间选择器中设置默认时间?

    如何将默认小时和分钟设置为 00 00 这里我只想设置时间而不是日期 我正在使用以下日期时间选择器代码 在此代码中 如何将默认时间设置为 00 00 timepicker rowIndx datetimepicker format dd M
  • 如何使用 jQuery 附加到跨度内的

    标记?

    jsFiddle 我正在尝试将一些文本附加到跨度中的标题中 但我不知道如何附加到实际标题 而不仅仅是跨度 Style h1 font size 250 color red HTML span class note h1 some text

  • 我可以将 CSS 应用于 iframe 中的元素吗?

    我经常看到使用包含外部站点的 iframe 的网站 以及包含供用户使用的 JavaScript 功能的顶部框架 例如用户分析软件 Digg bar 等 对于尝试类似的东西有什么建议吗 如果知道的话那就太好了 不 不是来自outsideifr
  • 在 Jenkins 中远程触发构建

    我曾尝试通过在提交挂钩中使用此 URL 来触发我的 Jenkins 项目 curl http jenkins server job job name build token TOKEN 并且没有被触发 但是当我在网络浏览器中输入这个 URL
  • 如何使用 Codeigniter 从数据库检索数据并将其显示在 html 表格中

    任何人请帮助我检索数据库数据以及如何在 html 表中查看它 我给出的编码是否正确 如果不正确 你能说出我必须如何给出吗 以便在 html 表中查看它 控制器 class edit content extends CI Controller
  • 如何获取传递给 multiprocessing.Process 的函数的返回值?

    在下面的示例代码中 我想获取函数的返回值worker 我该怎么做呢 这个值存储在哪里 示例代码 import multiprocessing def worker procnum worker function print str proc
  • 从 Mac 向 iPhone/iPad/iPod touch 发送通知

    我目前销售一款仅适用于 Mac 的生产力工具 该工具使用视觉和音频通知来提醒用户正在发生的某些事件 我已经开始规划该 Mac 程序的 iPhone 和 iPad 版本 并希望能够提供从 Mac 到 iPhone 的通知服务 例如iPhone
  • 使用 LINQ 获取配对集

    当我有一个清单时 IList
  • 如何在 map() 中使用异步代码(Flutter、Firestore)

    我正在使用 Flutter 和 Firestore 插件开发一个群聊应用程序 从数据库获取数据并将快照转换为消息列表完全可以正常工作 但现在我想将数据库中的 uid 转换为用户名 uid 及其用户名保存在数据库中 这是我的代码 final
  • 使用 XSLT 2.0 的两阶段转换

    我正在尝试将 CSV 文件作为输入并将其转换为 XML 我是 XSLT 新手 我找到了一种将 CSV 转换为 XML 的方法 使用来自安德鲁韦尔奇 像这样 输入 CSV 文件 car manufacturer model color pri
  • yaml 中的“>-”和“|-”有什么区别?

    我想确切地知道 gt 和 之间的区别 特别是在 kubernetes yaml 清单中 折叠块标量中的换行符 gt 受到行折叠 文字块标量中的换行符 不是 行折叠将非空行之间的单个换行符替换为空格 并且在空行的情况下 将周围非空行之间的换行
  • ASP.NET Core执行Linux shell命令

    有没有办法从 ASP NET Core 应用程序中执行 Linux shell 命令并将值返回到变量中 目前最好的可能性似乎是使用预发布版SSH Net Core https www nuget org packages SSH Net C
  • 使用 PHP 脚本进行 ERR_CONNECTION_RESET

    我有一个 PHP 脚本 可以下载和处理一些文件 有时文件数量非常大 因此需要一些时间 但是 当有大量文件需要处理时 连接会中断并出现 ERR CONNECTION RESET 错误 Chrome 这是我的配置 upload max file
  • 从网站上的按钮下载文件的 Python 脚本

    我想通过单击以下网址中的 导出到 Excel 按钮来下载 xls 文件 https apps tampagov net CallsForService Webapp Default aspx type TPD 更具体地说 按钮 name c
  • offsetTop 与 jQuery.offset().top

    我读过offsetLeft and offsetTop不能在所有浏览器中正常工作 jQuery offset 应该为此提供一个抽象 以提供正确的值 xbrowser 我想要做的是获取元素被单击的位置相对于元素左上角的坐标 问题是jQuery
  • 在 iOS 上读取 sms.db 和 call_history.db 文件?

    我正在为越狱的 iPhone 5s iOS 7 1 1 开发一个应用程序 以获取存储在相应 db 文件中的通话日志和消息 我有一些疑问 我有一个有效的证书 配置文件 并且我的应用程序是使用此配置文件签名的 因此是否有必要删除此配置文件并使用
  • 错误:控制到达非 void 函数的末尾

    我在学习C 我从教科书上复制了这段代码 在编译代码时 最后出现错误 错误说 控制到达非 void 函数的末尾 它位于代码的末尾 include ComplexNumber hpp include