gpt4 book ai didi

c++ - 1 :n relation in OOP regarding to deserialisation

转载 作者:行者123 更新时间:2023-11-28 03:50:53 25 4
gpt4 key购买 nike

我像这样模拟了两个类:

ClassA -- n:1 --> ClassB

ClassB 对 ClassA 一无所知(单向关系)。现在我正在为 ClassA 编写一个文件加载器,它使用(并且不拥有)一个 ClassB 对象。

代码方面的 ClassA 持有指向 ClassB 的指针,这就是我的问题出现的地方:加载程序只负责加载 ClassA,无法访问包含所有 ClassB 对象的容器,因此不可能建立关系。

一个解决方案是向 ClassA 插入一个字符串成员,其中包含 ClassB 对象的 ID,以便稍后可以建立关系。但是,问题是是否有任何其他方法可以解决此问题。加载后我不再需要该 ID,因此我想将其省略。

应加载的 ClassA 文件示例:

Id: "some-id" # Irrelevant for this example. ;-)
ClassB: "some-classb-id"

ClassA 拥有指向 ClassB 对象的一个指针。加载程序现在反序列化 ClassA 并且加载任何 ClassB 对象,而只是与已经存在的 ClassB 对象建立关系。这是因为 ClassB 对象是预加载的,而 ClassA 对象可以在运行时添加。

ClassA 中的 ClassB 指针可能为 NULL,这完全没问题(这是一个可选关系)。

最佳答案

我只想到了 2 种方法:

  • 最简单的方法是定义 ClassB 的 1 个所有者 (ClassC)对象,然后将 ClassB 传递给用户ClassA。这意味着添加依赖于另一个(新)类,但据我所知,一些类仍然必须分发 ClassB。
  • 再脏一点就够了ClassA 只加载 ClassB 和 ClassB第一次加载。但这会不允许加载 ClassB 超过一次(解决方案可能是通过一个新的需要时将 B 类转到 A 类。

关于c++ - 1 :n relation in OOP regarding to deserialisation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5536364/

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