Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ';没有匹配的函数调用';对于子类/超类_C++_Subclass_Superclass - Fatal编程技术网

C++ ';没有匹配的函数调用';对于子类/超类

C++ ';没有匹配的函数调用';对于子类/超类,c++,subclass,superclass,C++,Subclass,Superclass,我遇到了一个“没有匹配的函数调用”错误,我不知道如何摆脱它,这似乎与我的子类没有被识别为超类有关。我有一个超类几何体和一个子类立方体,声明为: class Cube : public Geometry { //code Intersection intersect(const Ray& ray_in, bool& intersected) const; }; 多维数据集有一个返回交点的方法: Intersection Cube::intersect(const

我遇到了一个“没有匹配的函数调用”错误,我不知道如何摆脱它,这似乎与我的子类没有被识别为超类有关。我有一个超类几何体和一个子类立方体,声明为:

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);
                                                  ^

为什么它不承认立方体是几何体的一个子类并试图调用正确的交集构造函数?

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

return Intersection(point, normal, t_near, this); 
目前还不清楚
t\u near
是什么,但很可能是
double
。将第三个参数的
double
传递给构造函数,并将
this
作为第四个参数传递给构造函数,这显然是某种指针。记下这一点,然后再继续

然后,您还声明您的构造函数声明如下:

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

这就是你的问题所显示的。现在,问问你自己:在你的
return
语句中,这个构造函数的第三个参数是
double
,第四个参数是某种指针吗?

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

return Intersection(point, normal, t_near, this); 
目前还不清楚
t\u near
是什么,但很可能是
double
。将第三个参数的
double
传递给构造函数,并将
this
作为第四个参数传递给构造函数,这显然是某种指针。记下这一点,然后再继续

然后,您还声明您的构造函数声明如下:

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

这就是你的问题所显示的。现在,问问你自己:这个构造函数的第三个参数是一个
double
,第四个参数是一个指针,当你构造这个类的实例时,在你的
return
语句中?

是的,我没有检查我传递参数的顺序,而是假设它与类继承有关…谢谢。是的,我没有检查我传递参数的顺序,而是假设它与类继承有关…谢谢