Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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++ C4430错误-缺少类型说明符-假定为int_C++ - Fatal编程技术网

C++ C4430错误-缺少类型说明符-假定为int

C++ C4430错误-缺少类型说明符-假定为int,c++,C++,我正在制作一个数学库(实际上是复制一个并修改它),但在所有错误之后,只有一个错误我似乎无法摆脱。找不到类型说明符。 在我数学的201行,h是这一行: int Classify(const Polygon &vcPoly); 我真的试着在谷歌上搜索,但什么也没找到。对我来说,问题不太明显。 这是Plane类的源代码。数学标题中还有向量、光线、矩阵和其他一些数学类。类多边形位于平面类之后,但我在标题顶部包含了定义 class Plane { public: V

我正在制作一个数学库(实际上是复制一个并修改它),但在所有错误之后,只有一个错误我似乎无法摆脱。找不到类型说明符。 在我数学的201行,h是这一行:

     int   Classify(const Polygon &vcPoly);
我真的试着在谷歌上搜索,但什么也没找到。对我来说,问题不太明显。 这是Plane类的源代码。数学标题中还有向量、光线、矩阵和其他一些数学类。类多边形位于平面类之后,但我在标题顶部包含了定义

    class Plane {
  public:
  Vector m_vcN,       // plane normal vector
            m_vcPoint;   // point on plane
  float     m_fD;        // distance to origin

  //---------------------------------------

  Plane(void) { /* nothing to do */ ; }

  inline void  Set(const Vector &vcN, const Vector &vcP);
  inline void  Set(const Vector &vcN, const Vector &vcP, float fD);
  inline void  Set(const Vector &v0,  const Vector &v1, const Vector &v2);
  inline float Distance(const Vector &vcPoint);
         int   Classify(const Polygon &vcPoly);
  inline int   Classify(const Vector &vcPoint);

  bool Clip(const Ray*, float, Ray*, Ray*);

  bool Intersects(const Vector &vc0, const Vector &vc1, 
                  const Vector &vc2);
  bool Intersects(const Plane &plane, Ray *pIntersection);
  bool Intersects(const Aabb &aabb);
  bool Intersects(const Obb &obb);

 }; // class

希望你能帮助我。

那行好像不知道多边形的类型。您是否包含了正确的头文件?我的猜测是
Polygon.h
(或类似的东西)丢失了

编辑:如果所有类都包含在同一个标题中,那么在需要将该类作为类型之前,您可能必须确保该类已定义(带有原型)。这意味着您可以将类原型放在头文件的开头:

// prototype for Polygon
class Polygon;

这是两个收割台相互包含的情况:

平面h: #包括“Polygon.h”

多边形.h #包括“平面h”

由于
#include
意味着“预处理命名文件并在此处插入内容”,这将导致无限递归,这就是为什么一种常见的技术是在头文件中使用“include guard”,形式如下:

#ifndef _SOMETHING_H_
#define _SOMETHING_H_
// header contents here
#endif
其工作原理是,如果您首先包含Polygon.h,它将定义预处理器符号,然后在标题顶部包含您所包含的文件。其中一个是Plane.h,然后它又试图包含Polygon.h,但由于定义了Polygon的保护符号,所以它会作为一个空文件包含

这可以防止无限递归,但正因为如此,在包含的平面定义之前没有多边形类型的定义

解决方案是至少在其中一个标头中(可能同时在这两个标头中)使用类型的正向定义替换标头的包含。所以在平面h中,而不是:

#include "Polygon.h"
你可以:

class Polygon;
在多边形中也可以这样做


请注意,没有定义的前向声明类型被称为不完整类型,并且在标头中如何使用它有一些限制:您可以定义指向它的指针或引用(这是示例中使用的方式,但您可能不定义实例、传递值、访问字段等。

如果您希望我们提供具体建议,您应该复制准确的错误消息。尝试删除行以减少重现问题所需的最小行数,然后您将识别错误或发布si此处的简化版本,具有重新创建所需的所有功能。可能是平面和多边形相互依赖,并且多边形标头包括您的平面标头?在这种情况下,第二轮通常不会包括其中一个标头,并且类型将未定义。请尝试提出前向声明n在平面定义之前的多边形,而不是包含标题。它们确实相互依赖,这就是为什么我在标题顶部包含类Polygon;作为定义。我不包含任何其他标题,那么所有内容都在一个标题中:math.h,-----我包含/键入了类似类Polygon的元素;未包含文件或something@Christain,您需要发布整个Math.h文件。当您这样做时,应该很容易进行排序。@Christian-多边形声明的分号是否有误?多边形类也在数学标题中,就像平面类一样。多边形类仅位于平面类之后。这就是我添加like:class Polyg的原因在头的顶部,作为定义。但是我不知道什么是错误。错误C44:缺少类型指定符-int假设。注意:C++不支持默认int,之后出现错误C2143:语法错误:“缺失”,“之前”和“错误”,当然是Reldidii确实这样做了。(谢谢你们的建议!)我键入了那一行,但它似乎没有帮助。错误消息仍然存在。奇怪的是没有:类型定义未知错误或类似的错误。我找到了答案!结果是我必须在CPP文件中内联函数,并在类中内联函数,然后一切都解决了!我想这不是真的重新加载,因为一个是内联函数,另一个不是。非常感谢大家。