'没有匹配的函数调用'的子类/超类
问题描述:
我得到'没有匹配的函数调用'错误,我无法弄清楚如何摆脱,它似乎与我的子类不是承认为超级类别。我有一个子类立方的超几何,声明如下:'没有匹配的函数调用'的子类/超类
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
语句中构造这个类的一个实例?
是啊数字我没有检查我在通过我的论点之前,假设它与类继承有关...命令 –