C++中如何返回NULL对象

2023-12-21

我知道这可能是以下内容的重复:如果未找到搜索结果,则返回“NULL”对象 https://stackoverflow.com/questions/2639255/c-return-a-null-object-if-search-result-not-found

但是,我的代码出现了一些不同的情况,因为星号不能解决我的问题,即:

Normal Sphere::hit(Ray ray) {
   //stuff is done here
   if(something happens) {
       return NULL;
   }
   //other stuff
   return Normal(something, somethingElse);
}

但我在引用时遇到错误return NULL line: conversion from ‘int’ to non-scalar type ‘Normal’ requested

另一个错误和警告引用最后一个返回行:warning: taking address of temporary and conversion from ‘Normal*’ to non-scalar type 'Normal' requested

我明白为什么会收到此警告,但我不知道如何解决它。我如何返回Normal函数结束后最后一行中的对象仍然存在,以及如何返回NULL第一次反对? (如果有针对此类回报的术语,请告诉我,以便我也可以阅读更多内容。)

为了澄清评论者的问题,我尝试了以下方法:

我尝试这样做:Normal *Sphere::hit(Ray ray)在 cpp 文件中和Normal *hit( Ray ray );在头文件中,我收到此错误:error: prototype for ‘Normal* Sphere::hit(Ray)’ does not match any in class 'Sphere'

我也尝试过这个:Normal Sphere::*hit(Ray ray)在 cpp 文件中和Normal *hit( Ray ray);在头文件中,我在第二个 return 语句中收到此错误:cannot convert 'Normal*' to 'Normal Sphere::*' in return

进一步澄清:我不是在问指针如何工作。 (这不是主要问题。)我想知道有关 C++ 中指针的语法。因此,鉴于我上面指定的函数,我发现我应该指定返回指针,因为 C++ 没有空对象。知道了。但是,问题就变成了:函数原型应该是什么样子?在 cpp 文件中,我有 Bala 的建议(这是我最初的建议,但由于以下错误而更改了它):

Normal* Sphere::hit(Ray ray) {
   //stuff is done here
   if(something happens) {
       return NULL;
   }
   //other stuff
   return new Normal(something, somethingElse);
}

在头文件中,我有Normal *hit(Ray ray),但我仍然收到此消息:prototype for 'Normal* Sphere::hit(Ray)' does not match any in class 'Sphere'目前,我不清楚为什么它找不到该函数原型。这是头文件:

class Sphere
{
    public:
        Sphere();
        Vector3 center;
        float radius;
        Normal* hit(Ray ray);
};

谁能明白为什么它抱怨不存在匹配的原型hit in the Sphere班级? (我可能会将其移至一个单独的问题......)


我想你需要类似的东西

Normal* Sphere::hit(Ray ray) {
   //stuff is done here
   if(something happens) {
       return NULL;
   }
   //other stuff
   return new Normal(something, somethingElse);
}

能够返回NULL;

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

C++中如何返回NULL对象 的相关文章

随机推荐

  • 术语“Connect-AzureAD”未被识别为 cmdlet 的名称

    从 Azure AD 中的 C 应用程序运行 powershell 脚本 添加了以下 DLL 参考 系统 管理 自动化 Microsoft Online Administration Automation PSModule Resource
  • 将 cookie 从 HttpURLConnection (java.net.CookieManager) 传递到 WebView (android.webkit.CookieManager)

    我已经看到了关于这应该如何与旧版本一起使用的答案DefaultHttpClient但没有一个很好的例子HttpURLConnection http developer android com reference java net HttpU
  • Typesafe/Hocon 配置:变量替换:参考路径

    我们有一个项目 其中包含使用 hocon configs 构建的巨大配置文件 有意图使用变量来创建template section并根据一些选项在模板中设置一些值 问题是在使用时variables在此配置中 我必须始终引用绝对路径 是否可以
  • 如何计算数据框中分组行集中先前的差异

    我正在寻求有关 Pandas 中同时分组 行间差异问题的帮助 对于 R 问题与此处所述完全相同 如何计算每个组 学生合同 的日期时间之间的时间差 https stackoverflow com questions 18092072 how
  • 如何使用 ASP.net C# 将 SQL 选择存储到 gridview?

    SqlCommand cmd new SqlCommand SELECT FROM order WHERE date gt begin AND date lt end con cmd Parameters AddWithValue begi
  • Redux Persist + Redux 工具包 $CombinedState 错误

    我正在尝试将 redux persist 添加到 redux 工具包 但由于某种原因我得到了一个Exported variable store has or is using name CombinedState from external
  • 无法读取未定义 Javascript 的属性“push”[重复]

    这个问题在这里已经有答案了 您好 我似乎无法推送我的阵列 代码 scope arrResult dpd timesheets get function result console log result for i 0 n result l
  • 每个模型有多个图像

    我正在 Django 中编写一个简单的房地产列表应用程序 每个属性都需要有不同数量的图像 图像需要有可编辑的顺序 我需要让管理员免受用户攻击 也就是说 我有什么选择 是否有我不知道的 ImageList 字段 有没有类似的应用程序djang
  • 让 Log.i 继续生产安全吗?

    在我的android应用程序中我广泛使用Log i Log e 在这些命令中 我通常传递与我的应用程序通信的 SQLite 查询或 http 剩余 URL 我的问题是 当应用程序到达 Play 商店时保留这些日志是否安全 如果用户在其设备连
  • 如何在react中从http重定向到https?

    我在 Chrome 中的审核显示了 net ERR EMPTY RESPONSE 因为 Lighthouse 无法可靠地加载我请求的页面 Google 开发人员建议我配置我的服务器 node js 以从 http 重定向到 https 我尝
  • 全局禁用 sbt supershell

    如同这个问题 https stackoverflow com questions 61432711 sbt 1 3 8 displaying a lot of useless messages我想阻止 sbt 用消息和空行向 shell 发
  • 在 pickle 文件中保存和加载多个对象?

    我有一个类为游戏中的玩家提供服务 创建他们和其他东西 我需要将这些播放器对象保存在文件中以便稍后使用 我尝试过 pickle 模块 但我不知道如何保存多个对象并再次加载它们 有没有办法做到这一点 或者我应该使用其他类 例如列表 并在列表中保
  • 为什么我们需要容器?

    作为借口 标题模仿了标题为什么我们需要单子 https stackoverflow com questions 28139259 why do we need monads 有容器 http www sciencedirect com sc
  • celery .delay 挂起(最近,不是身份验证问题)

    我正在运行 Celery 2 2 4 djCelery 2 2 4 使用 RabbitMQ 2 1 1 作为后端 我最近上线了两台新的 celery 服务器 我一直在两台机器上运行 2 个工作线程 总共有大约 18 个线程 在我的新增强的盒
  • AssertionError:“HyperlinkedIdentityField”需要序列化器上下文中的请求

    我想创建一个many to many一个人可以加入多个俱乐部 一个俱乐部可以有很多人的关系 我添加了models py and serializers py对于以下逻辑 但当我尝试在命令提示符中序列化它时 出现以下错误 我在这里做错了什么
  • Typescript:为什么 keyof {} 的类型是 never?

    我很困惑keyof应用于空对象时的运算符 示例代码 const o const k Array
  • React 替换 componentWillReceiveProps

    在我的子组件中有以下方法可以更新道具更改的状态 效果很好 componentWillReceiveProps nextProps update original states this setState fields nextProps f
  • 使用预输入时在 onblur 事件期间选择值

    我有一个简单的预先输入获取货币列表 当我开始输入并选择所需的值 或按 TAB 键 时 就会选择所需的值 直到此时一切都按预期进行 然而 如果我输入整个单词并在输入外部单击而不是选择值 onblur 事件 那么即使我输入中的值与过滤器值匹配
  • 量角器覆盖范围不生成报告

    我们应用程序的后端位于PHP对于前端我们正在使用AngularJs 我们成功地在本地和生产服务器上运行了 e2e 测试 使用protractor 在为我们的应用程序编写大量 e2e 测试后 我们开始寻找与单元测试类似的覆盖范围 经过一番寻找
  • C++中如何返回NULL对象

    我知道这可能是以下内容的重复 如果未找到搜索结果 则返回 NULL 对象 https stackoverflow com questions 2639255 c return a null object if search result n