相互使用的类

Classes using each other?

本文关键字:      更新时间:2023-10-16

我有 2 个头文件,其中包含 2 个类。每个类都依赖于其他类,如下所示:

// class1.h
#include "class2.h"
class ClassOne {
    ClassTwo* c2;
};

// class2.h
#include "class1.h"
class ClassTwo {
    ClassOne* c1;
};

我希望代码不会编译,所以我在其中一个标头中添加了一个前向声明:

// class1.h
#include "class2.h"
class ClassTwo;
class ClassOne {
    ClassTwo* c2;
};

但遗憾的是,这也行不通。我不断收到"使用未定义类型'ClassTwo'"的编译器错误。

我知道我可以将它们组合成一个头文件,它们就可以工作,但实际上它们都是非常大的类,我真的希望它们有自己的头文件用于组织目的。

有没有办法解决这个问题?

谢谢亚历克斯

您添加了前向声明,但没有删除include。这样做,你就是金子。

实际上,删除这两个包含,并将它们替换为前向声明。

// class1.h
class ClassTwo;
class ClassOne {
    ClassTwo* c2;
};

// class2.h
class ClassOne;
class ClassTwo {
    ClassOne* c1;
};

请注意,实际需要循环依赖项的情况很少而且相距甚远,因此至少要查看设计。

相关文章:
  • 没有找到相关文章