如何处理c ++中的相关类

时间:2016-04-08 04:22:57

标签: c++

我的class1需要class2和class2的头部,需要包含class1的头部。

我在class1中包含了class2的头文件,在class2中包含了class1的头文件并且开始出现问题(在class2中我得到的错误表明class1实例没有命名一个类)

请有人解释如何处理这种情况,因为我搜索了这个问题,但没有做什么

谢谢

1 个答案:

答案 0 :(得分:3)

一个经常适用的解决方案是简单地向前声明类。例如:

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

但是,请注意,只要您不编写需要使用类定义的代码,此策略才有效,这可以在使用指针或对类的类型的引用时实现。只要您使用没有引用或指针的类类型,您就需要提供已经处理和可用的类的完整声明。