gpt4 book ai didi

c++ - C++ 中的循环依赖

转载 作者:IT老高 更新时间:2023-10-28 22:00:33 24 4
gpt4 key购买 nike

事实:

  • 我有两个主要类别:经理和专家。
  • 有几种不同类型的专家。
  • 专家通常需要其他专家的帮助才能完成工作。
  • 经理认识所有的专家,最初每个专家只认识他们的经理。 (这就是问题所在。)
  • 在运行时,管理器会创建并存储专家列表。然后 Manager 遍历列表并要求每个专家进行初始化。在初始化期间,每个专家都要求经理向他们提供满足某些描述的其他专家。完成后,经理将进入一个循环,在此期间专家被依次要求执行他们的专业任务。

对我来说,这似乎是一个不错的模式,但由于经理有专家列表,而专家有经理,我遇到了循环依赖问题。

在这种情况下,我应该以某种方式向前声明一个类的存在吗? (如果是这样,如何?)或者我应该使用一些设计模式来解决这个问题? (如果是这样呢?)另外......我虽然模式本身很不错。所以我不介意有人帮助我理解为什么这是一件坏事。

最佳答案

在这两种情况下,前向声明另一个类:

Manager.h

class Specialist;

class Manager
{
std::list<Specialist*> m_specialists;
};

Specialist.h

class Manager;

class Specialist
{
Manager* m_myManager;
};

只有当你需要在该类中使用成员函数或变量,或者需要将类用作值类型等时,才需要为类引入头文件。当你只需要一个指针时或引用类,前向声明就足够了。

请注意,前向声明不仅仅用于解决循环依赖。您应该尽可能使用前向声明。如果可行的话,它们总是比包含一个额外的头文件更可取。

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

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