如何在c++中处理相互依赖的类
How to deal with codependent classes in c++
我有一个class1,它需要class2的头。还有一个class2,它需要包含class1的头。
我在类1中包含了类2的头,在类2中包含了类1的头,麻烦开始了(在类2中,我得到了一个错误,说类1实例没有命名类)
请有人解释一下如何处理这种情况,因为我在谷歌上搜索了这个问题,但没有得到该怎么办
感谢
一个通常适用的解决方案是简单地转发声明类。例如:
class1.h#ifndef CLASS1_H
#define CLASS1_H
class Class2;
class Class1 {
public:
// ...
private:
// ...
std::unique_ptr<Class2> owned_child_;
// ...
};
#endif
class2.h#ifndef CLASS2_H
#define CLASS2_H
class Class1;
class Class2 {
public:
// ...
private:
// ...
const Class1* unowned_parent_;
// ...
};
#endif
但是,请注意,只有在不编写要求类定义可用的代码的情况下,此策略才有效,这可以在使用指向类类型的指针或引用时实现。一旦使用不带引用或指针的类类型,就需要提供已处理的类的完整声明。
相关文章:
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 如何在bazel中同时处理外部依赖项和我的项目
- 处理多个子目录中的 Makefile 依赖项并输出到单独的子目录
- 是否有可以处理方法调用依赖关系的设计模式?
- 使用 CMake 和 C++ 处理共享库依赖项
- 如何在Visual Studio(C++11)中处理相互依赖/循环依赖
- 如何处理对生成文件中依赖项的重命名操作?
- 处理C或C 中环状依赖的最佳方法
- 如何使用Bamboo CI处理C++CMake项目之间的依赖关系
- 处理FFMPEG依赖关系
- 如何处理相互依赖并具有模板成员的类
- 依赖关系注入和事件处理
- 我应该/可以/必须如何处理我的C++项目所依赖的dll
- 如何在c++中处理相互依赖的类
- Visual-Studio:高效处理循环库依赖
- 在多个相互依赖的线程上进行封送处理和等待的算法、模式或最佳实践
- 处理 Linux 上的库依赖关系
- 如何更好地处理依赖于模板参数的类成员类型
- 处理对继承的循环依赖
- C++中的基本类设计,处理相互依赖的类