我有需要class2标头的class1和需要class1标头的class2。

我在class1中包含了class2的标头,而在class2中包含了class1的标头,并且麻烦开始了(在class2中,我收到了错误消息,指出class1实例未命名类)

请有人解释一下如何处理这种情况,因为我在Google上搜索了此问题,但是却无所适从

谢谢

最佳答案

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

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


但是请注意,仅当您不编写要求使用该类定义的代码时,此策略才有效。使用指针或对该类类型的引用时可以实现此策略。一旦使用没有引用或指针的类类型,您将需要使已处理且可用的类的完整声明可用。

关于c++ - 如何处理C++中的依赖类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36491495/

10-11 05:07