'没有匹配的函数调用'的子类/超类

问题描述:

我得到'没有匹配的函数调用'错误,我无法弄清楚如何摆脱,它似乎与我的子类不是承认为超级类别。我有一个子类立方的超几何,声明如下:'没有匹配的函数调用'的子类/超类

class Cube : public Geometry { 
    //code 
    Intersection intersect(const Ray& ray_in, bool& intersected) const; 
}; 

和多维数据集必须返回一个路口的方法:

Intersection Cube::intersect(const Ray& ray_in, bool& intersected) const { 
    // code 
    return Intersection(point, normal, t_near, this); //point and normal are vec4, t_near is double 
} 

我有一个路口的构造:

Intersection(const glm::vec4& _point, const glm::vec4& _normal, Geometry* _geometry, const double _t); 

但是当我尝试编译时,我的Cube :: intersect方法中的返回行给出错误:

no matching function for call to 'Intersection::Intersection(glm::vec4&, glm::vec4&, float&, const Cube*)' 
    return Intersection(point, normal, t_near, this); 
               ^

为什么它不能识别Cube是Geometry的子类并尝试调用正确的Intersection构造函数?

这似乎与子类没有任何关系。构造函数的参数是完全错误的:

return Intersection(point, normal, t_near, this); 

目前还不清楚是什么t_near是,但它很可能是一个double。您将第三个参数double传递给构造函数,并将this作为构造函数的第四个参数传递,显然它必须是某种类型的指针。请记在脑子里,在此之前还去......

然后,你还声称,你的构造声明如下:这就是你的问题,你所示的界面

Intersection(const glm::vec4& _point, const glm::vec4& _normal, 
      Geometry* _geometry, const double _t) 

。现在,问你自己:这是构造函数的第三个参数a double,第四个参数是某种类型的指针,因为你在return语句中构造这个类的一个实例?

+0

是啊数字我没有检查我在通过我的论点之前,假设它与类继承有关...命令 –