在C ++ / CLI中,我想要一个类似于以下的类层次结构:
Foo
FooA : Foo, ClrClassA
FooB : Foo, ClrClassB
FooA是否可以共享(非CLR)基类,同时还从单独的CLR类继承?如果没有,FooA和FooB分享公共代码的最佳方式是什么?
答案 0 :(得分:5)
一般来说,composition is often better than inheritance因为它往往导致设计不那么紧密。
如果您正在混合托管代码和非托管代码,根据我的经验,将非托管代码包装在托管代码中通常更容易,反之亦然。
托管代码不支持多重继承,而an article on Wikipedia解释了原因:
托管C ++以及类和基于类的对象的使用在Visual C ++中仍然很普遍。 Managed C ++中唯一的主要变化是不支持多重继承的功能。这是因为CLR的限制。在CLR的垃圾收集器下管理的类不能继承多个类
如果如何最好组合您的类/功能而不知道为什么要组合这些类,那么很难给出一个很好的答案......
答案 1 :(得分:3)
你不能让一个类继承引用和本机类型。