问题
我有两个类:一个 4 元素向量 (Vec4) 和一个 4x4 矩阵 (Mat4)。我试图在每个类中为另一个定义乘法运算符:
class Mat4;
class Vec4;
class Vec4
{
public:
float x, y, z, w;
const Vec4 operator *(const Mat4& m)const
{
Vec4 r;
//...
return r;
}
};
class Mat4
{
public:
Mat4()
{ //... }
union
{
Vec4 v[4];
float m[4][4];
struct
{
float _11, _12, _13, _14,
_21, _22, _23, _24,
_31, _32, _33, _34,
_41, _42, _43, _44;
};
};
const Vec4 operator *(const Vec4& x)const
{
Vec4 r;
//...
return r;
}
编译器 (MSVC++) 在 Vec4::operator * 处阻塞,吐出错误
C2027: use of undefined type 'Mat4'
正如你所看到的,我已经在它们各自的定义之前声明了这两个类
class Mat4;
class Vec4;
任何关于我如何在不引起这些比赛问题的情况下拥有这个操作员的建议都将非常感激。