C 从多个继承类写入二进制文件
c++ Writing to Binary files from multiple inheritance class
我有一个类似于"死亡钻石"
的情况我有B级和C几乎继承A类,以及继承B和C的D类D类
A
/
B C
/
D
b&C继承了成员,也是他们自己的成员。D仅继承成员。
我正在编写"保存方法",该方法会得到流向,应将对象写入二进制文件。
和一种获得ifstream的加载方法,应从二进制文件创建对象。
该方法是虚拟的,并以每种类方法仅处理该特定类成员加载&的方式编写。保存(并为其余的继承成员使用继承的类方法(
现在在编写D的保存方法时,基本上我只需要做:
B.save();
C.save();
显然,这将导致a.save((被称为两次,这将使A写入文件两次
我认为诸如将保存方法添加到B和C之类的东西只能保存其成员(而不是A(是愚蠢的
所以我想知道这种情况的最佳实践是什么?
最好的做法是不要在同类的继承中制作钻石。这总是会引起问题,并且最好避免。评估继承中的每个链接,并考虑您是否可以做一些不同的事情,例如在某个时候使用构图或使基类成为纯虚拟接口。
如果您真的想保留该继承,那么就不会使A::save()
成为虚拟方法,而是制作一个受保护的纯虚拟A::onSave()
方法,预计将在每个派生类中被覆盖。A::save()
将执行需要做的事情,然后致电onSave()
。B和C都将实现onSave()
并执行他们需要做的事情,但不会称呼A::onSave()
(因为它是纯虚拟的(。D将实现onSave()
,并致电B::onSave()
和C::onSave()
。对于这种情况,这是围绕该问题的工作,但是如果您制作这样的继承钻石,您将始终遇到更多这样的问题。
相关文章:
- 头文件-继承c++
- 正在读取二进制文件(is_open)
- 在C++中将类(带有Vector成员)保存为二进制文件
- 如何从另一个文件继承私有成员变量和公共函数
- 如何从二进制文件中读取字符串
- 保存/加载大量短数组到二进制文件
- 从二进制文件中读取整数数组
- Android 在编译二进制文件时重建静态库
- 在 C++ 中将双精度变量写入二进制文件
- clang 的 libFuzzer 可以在同一二进制文件中测试超过 1 个 API 吗?
- C++:实际上不是从二进制文件中读取
- 如何从二进制文件中的给定符号中获取调用程序图
- 将内部带有矢量的结构保存/读取到二进制文件中
- 编译多个C++文件.调用二进制文件以运行代码
- 如何使用位字段将数据从二进制文件复制到结构中?
- uint8_t同一二进制文件的不同十进制值
- C++单个生成文件多个二进制文件
- 尝试将数字写入二进制文件时引发异常
- C++中读/写二进制文件
- C 从多个继承类写入二进制文件