在C ++ / CLI中,我想要一个类似于以下内容的类层次结构:

Foo
  FooA : Foo, ClrClassA
  FooB : Foo, ClrClassB


FooA是否可以共享一个(非CLR)基类,同时还可以从单独的CLR类继承?如果不是,那么FooA和FooB共享通用代码的最佳方法是什么?

最佳答案

一般而言,composition is often better than inheritance往往会导致耦合设计不那么紧密。

如果您要混合使用托管代码和非托管代码,那么根据我的经验,通常将非托管代码包装在托管代码中要容易得多,反之亦然。

托管代码不支持多重继承,并且an article on Wikipedia解释了原因:


与Visual C ++一样,托管C ++以及类和基于类的对象的使用仍然很普遍。托管C ++中对此的唯一主要更改是不支持多重继承的功能。这是由于CLR的限制。在CLR的垃圾回收器下管理的类不能继承多个类


在不知道为什么要合并类的情况下,很难就如何最好地组合类/功能给出一个很好的答案...

10-02 01:57
查看更多