gpt4 book ai didi

c++ - 设计我的程序以避免必须从基类转换为派生类

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:06 24 4
gpt4 key购买 nike

好吧,我似乎需要从基础到派生的正向转换,我认为这可能是一个设计问题,所以我会解释我在做什么,你可以告诉我我需要改变什么。XML 文件定义了一堆相似的对象。它们共享相同的基类。 main 函数定义在基类 DoWork() 中,它是虚拟的。

我的程序加载 XML 文件并创建派生类并将它们分配给基类类型的 vector 。

程序一切正常。我可以遍历 vector 并调用 DoWork();

现在,我添加了一个 GUI 层,因此您可以修改对象并写回 XML 文件。所以,现在我的 GUI 代码可以访问基类指针的 vector 。但是,这并不好,因为我需要派生类的信息,这样我才能写出 XML 文件。是这种动态类型转换的唯一解决方案吗?我能以某种方式改变设计吗?我知道从 base 到 derived 的转换是不受欢迎的。

编辑:我的 GUI 需要显示派生类也具有的信息。仅仅有一个序列化类是不够的。

最佳答案

您可以添加例如每个类的虚拟 serialize 方法,这样您的输出循环就可以遍历 vector ,并在基指针上调用 (*i​​t)->serialize()每个元素?

关于c++ - 设计我的程序以避免必须从基类转换为派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4134896/

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