「関数呼び出しがありません」というエラーが表示されていますが、それを取り除く方法がわからないため、サブクラスが存在しないスーパークラスとして認識されます。私は、サブクラスキューブとスーパージオメトリを持つように宣言:サブクラス/スーパークラスの '一致する関数呼び出しがありません'
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);
^
キューブがジオメトリのサブクラスであり、正しい交差コンストラクタを呼び出そうとしていないのはなぜですか?
ええと私は順序をチェックしていませんでした。クラスの継承と関係があると仮定する前に引数を渡しました...ありがとう –