我有需要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/