gpt4 book ai didi

c++ - 相互依赖的类定义

转载 作者:太空宇宙 更新时间:2023-11-04 14:02:37 25 4
gpt4 key购买 nike

问题

我有两个类:一个 4 元素 vector (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:使用未定义类型“Mat4”

如您所见,我已将这两个类在它们各自的定义之前声明为

class Mat4;
class Vec4;

任何关于如何让这个运算符不引起这些竞争问题的建议都将不胜感激。

最佳答案

问题出现了,因为你在同一个文件中有定义和实现。尝试将定义(原型(prototype))拆分到头文件中,仅使用指向其他类的指针并将实现放入单独的 c++ 文件中,其中包括头文件和其他类的头。

基本上它是在告诉您,它确实知道有一个 Mat4 和一个 Vec4 类......但它不知道更多关于它的信息,除非您告诉它去哪里找。

关于c++ - 相互依赖的类定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18531466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com