我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] 删除。
我来说两句