我知道这可能是重复的:
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);
}
但是我得到一个引用返回NULL行的错误:从’int’转换为非标量类型’Normal’请求
另一个错误和警告,引用最后一个返回行:警告:获取临时地址和从“正常*”转换为非标量类型“正常”请求
我理解为什么我会收到此警告,但我不知道如何解决它.如何在函数结束后持续存在的最后一行返回Normal对象,如何在第一次返回NULL对象? (如果这些类型的退货有一个术语,请告诉我,以便我也可以阅读更多内容.)
为了澄清评论者的问题,我尝试了以下方法:
我尝试这样做:正常*球体::在cpp文件中命中(雷射线)和普通*命中(雷射线);在头文件中,我收到此错误:错误:’Normal * Sphere :: hit(Ray)’的原型与’Sphere’类中的任何一个都不匹配
我也试过这个:普通球体:: *在cpp文件中命中(雷射线)和普通*命中(雷射线);在头文件中我得到第二个return语句的错误:无法将’Normal *’转换为’Normal Sphere :: *’作为回报
进一步澄清:我不是在询问指针是如何工作的. (这不是主要问题.)