gpt4 book ai didi

c++ - 在类 B 中创建类 A 所拥有的对象,其中 B 不知道 A

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:15 25 4
gpt4 key购买 nike

我有一个关于设计的问题。类 A 拥有 Foo 类型对象的映射。 A 的对象创建 Foo 对象并将它们存储在 map 中,但是当某个指示出现时,我想在 B 类中做一些工作并在那里创建更多的 Foo 对象。 A 知道 B 并将任务委托(delegate)给它,但反之则不然。在 B 中创建的 Foo 对象仍然需要进入 A 中的映射。

可能的解决方案:

  1. 将 shared_ptr 的映射返回到从 B 中的方法创建的对象。
  2. 将 map 作为非常量引用从 A 传递到 B 中的方法。

不知何故,我觉得这两种方法都不好,B 类不应该真正创建它不拥有的对象。在这种情况下是否有一些设计模式可以提供帮助?我在考虑一些工厂,但它只是为问题添加一个代理,我真的认为它没有多大帮助。或者也许我应该完全摆脱 B 类并拥有 A 中的所有逻辑?然而,这里的问题是我不想让 A 做太多。

最佳答案

您可以提供一个适当的处理程序,类似于以下内容:

class B
{
public:
template <typename T>
void execute(T newObjectHandler)
{
Foo* foo = new Foo();
newObjectHandler(foo);
executeTask(foo);
}
};

void A::executeTask()
{
myB->executeTask([this](Foo* foo) { /* insert into map */ });
}

关于c++ - 在类 B 中创建类 A 所拥有的对象,其中 B 不知道 A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51401613/

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