gpt4 book ai didi

c++ - C++中如何处理相互依赖的类

转载 作者:行者123 更新时间:2023-11-28 00:04:35 24 4
gpt4 key购买 nike

我有 class1 需要 class2 的 header 。而 class2 需要包含 class1 的 header 。

我在 class1 中包含了 class2 的 header ,在 class2 中包含了 class1 的 header ,问题开始了(在 class2 中,我得到错误提示 class1 实例没有命名类)

请有人解释一下如何处理这种情况,因为我用谷歌搜索了这个问题,但没有得到该怎么做

谢谢

最佳答案

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com