![]() |
1
1
使包装成为数据。
|
![]() |
2
2
考虑一下您希望您的基类为您的数据做什么。如果要保存数据或将其显示在屏幕上,您可能需要一个具有ToString和ToXML等函数的基类。 让代码进化。写出您需要的不同的数据结构类。然后找到共性并将其转移到基类中。 |
![]() |
3
1
只需一个简短的注释,您就不能在基本构造函数中真正添加断言(0),因为无论您有多少继承,构造函数都将始终运行。 |
![]() |
4
1
我认为您在基类中缺少任何虚拟方法这一事实表明继承是在浪费时间。所有wrapperone和wrappertwo共享都使用相同的数据结构。如果您试图避免两次编写相同的业务逻辑来与数据结构交互,那么考虑将数据结构包装在一个类中以实现该业务逻辑,并让WrapperOne和WrapperTwo同时使用(而不是继承自)该业务逻辑类。 |
![]() |
5
1
可以将WrapperBase的默认构造函数和复制构造函数设置为“Protected”。它不需要添加任何非函数方法,并确保继承链之外的任何类都不能调用WrapperBase的构造函数。 或者干脆把遗产一起销毁。 |
![]() |
6
1
嗯,我觉得没问题。我建议为WrapperBase编写一个更全面的接口(使用虚拟方法)。 如果可能的话 . 我并不是要求您添加不必要的函数,而是建议将“包装器”接口更显式。与托米的建议相反,我的建议涉及到预先确定修改的接口——正如我已经说过的,这可能是不可能的。 |
![]() |
7
0
我认为我们需要更多地了解为什么您需要以不同的方式访问/修改它,以及为什么您看到不同的类需要这样做,以及您希望从中获得什么。 |
![]() |
8
0
我认为这个解决方案没有问题。 你很可能会发现,沿着这条轨迹,你最终会向WrapperBase类添加一些公共代码,当这个Haoppens出现时,你会很高兴你有一个公共的基类。 您还可能发现WrapperOne和WrapperTwo支持类似的接口。如果是这样的话,您可能希望使用纯虚拟方法在WrapperBase中定义该接口——这样,您就可以使用指向WrapperBase的指针作为实际使用的任何Wrapper的代理。 …希望这有道理! |
![]() |
9
0
我将使用一个温度相关的包装器,这样您就可以得到您需要的东西,而不必为虚拟调用/接口支付任何费用。
然后可以专门化包装器,而不需要基类。 |
![]() |
10
0
一般来说,虽然我同意基本类
可能
应该考虑两次并包含虚拟方法,从OO的角度来看,根本不需要将基类设置为虚拟的。
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 8 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 8 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 8 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 8 月前 |