令人困惑的缺少类型说明符错误

凯西

C4430 missing type specifier error对的所有使用都感到困惑Vector4D我不明白为什么要扔它。宣布了。它已定义。它存在。它的格式正确。(我注释掉了所有用法,除了类定义/声明和编译后的代码之外,还包括其他内容)。

代码按原样在VS2012中工作,但在VS2010中不工作。

这是Vector2D该类中的用法示例Vector3D包含Vector4D GetHomogeneous() const;类似al。

#ifndef A2DE_CVECTOR2D_H
#define A2DE_CVECTOR2D_H

#include "../a2de_vals.h"
#include "CMiscMath.h"

#include "CVector3D.h"
#include "CVector4D.h"

A2DE_BEGIN

class Vector2D {

public:

    Vector2D();
    Vector2D(double x, double y);
    Vector2D(const Vector2D& vector);
    Vector2D(const Vector3D& v3d);
    Vector2D(const Vector4D& v4d);
    Vector2D(const Math::PolarCoordinate& magnitude_and_angle);
    ~Vector2D();
    double GetX() const;
    double GetX();
    double GetY() const;
    double GetY();
    double GetLength() const;
    double GetLength();
    double GetLengthSquared() const;
    double GetLengthSquared();
    double DotProduct(const Vector2D& rhs) const;
    static double DotProduct(const Vector2D& a, const Vector2D& b);
    Vector2D Normalize() const;
    static void Normalize(Vector2D& v);
    Vector2D GetLeftNormal() const;
    Vector2D GetLeftNormal();
    Vector2D GetRightNormal() const;
    Vector2D GetRightNormal();
    Vector2D GetProjection(const Vector2D& b);
    static Vector2D GetProjection(const Vector2D& a, const Vector2D& b);
    Vector2D GetProjectionOnXAxis();
    Vector2D GetProjectionOnYAxis();
    double GetAngle() const;
    double GetAngle();
    static double GetAngle(const Vector2D& v);
    double GetAngleFrom(const Vector2D& b);
    static double GetAngleFrom(const Vector2D& b, const Vector2D& a);
    static double GetFacingAngle(const Vector2D& target, const Vector2D& source);
    static Vector2D GetFacingVector(const Vector2D& target, const Vector2D& source);
    Vector2D& operator=(const Vector2D& rhs);
    Vector2D& operator=(const Vector3D& rhs);
    Vector2D& operator=(const Vector4D& rhs);
    bool operator==(const Vector2D& rhs);
    bool operator==(const Vector2D& rhs) const;
    bool operator!=(const Vector2D& rhs);
    bool operator!=(const Vector2D& rhs) const;
    Vector2D& operator+=(double scalar);
    Vector2D& operator-=(double scalar);
    Vector2D& operator*=(double scalar);
    Vector2D& operator/=(double scalar);
    Vector2D operator+(const Vector2D& rhs) const;
    Vector2D operator+(const Vector2D& rhs);
    Vector2D operator-(const Vector2D& rhs) const;
    Vector2D operator-(const Vector2D& rhs);
    Vector2D operator-();
    Vector2D operator*(const Vector2D& rhs) const;
    Vector2D operator*(const Vector2D& rhs);
    Vector2D operator/(const Vector2D& rhs) const;
    Vector2D operator/(const Vector2D& rhs);
    Vector2D& operator+=(const Vector2D& rhs);
    Vector2D& operator-=(const Vector2D& rhs);
    Vector2D& operator*=(const Vector2D& rhs);
    Vector2D& operator/=(const Vector2D& rhs);
    operator Vector3D();
    operator Vector4D();
    Vector3D GetHomogeneous() const;
    Vector3D GetHomogeneous();
    friend Vector2D operator+(const Vector2D& v_lhs, double scalar_rhs);
    friend Vector2D operator+(double scalar_lhs, const Vector2D& v_rhs);
    friend Vector2D operator-(const Vector2D& v_lhs, double scalar_rhs);
    friend Vector2D operator-(double scalar_lhs, const Vector2D& v_rhs);
    friend Vector2D operator*(const Vector2D& v_lhs, double scalar_rhs);
    friend Vector2D operator*(double scalar_lhs, const Vector2D& v_rhs);
    friend Vector2D operator/(const Vector2D& v_lhs, double scalar_rhs);
    friend Vector2D operator/(double scalar_lhs, const Vector2D& v_rhs);

protected:

    void SetX(double x);
    void SetY(double y);
    void SetTerminal(double x, double y);

    double _x;
    double _y;
    double _angle;

private:
};


A2DE_END

#endif
文斯

在头文件中包含类似类型使我认为您可能具有循环依赖关系。建议在标头中使用前向声明,并且从您的Vector2D定义中可以看出#includes,您可以简单地使用而不是

class Vector3D;
class Vector4D;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章