C ++ / CLI:从一个CLR类继承多个C ++类

时间:2011-06-06 21:21:07

标签: .net visual-c++ c++-cli multiple-inheritance mixed-mode

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

Foo
  FooA : Foo, ClrClassA
  FooB : Foo, ClrClassB

FooA是否可以共享(非CLR)基类,同时还从单独的CLR类继承?如果没有,FooA和FooB分享公共代码的最佳方式是什么?

2 个答案:

答案 0 :(得分:5)

一般来说,composition is often better than inheritance因为它往往导致设计不那么紧密。

如果您正在混合托管代码和非托管代码,根据我的经验,将非托管代码包装在托管代码中通常更容易,反之亦然。

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

  

托管C ++以及类和基于类的对象的使用在Visual C ++中仍然很普遍。 Managed C ++中唯一的主要变化是不支持多重继承的功能。这是因为CLR的限制。在CLR的垃圾收集器下管理的类不能继承多个类

如果如何最好组合您的类/功能而不知道为什么要组合这些类,那么很难给出一个很好的答案......

答案 1 :(得分:3)

你不能让一个类继承引用和本机类型。