4

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

Foo
  FooA : Foo, ClrClassA
  FooB : Foo, ClrClassB

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

4

2 回答 2

5

一般来说,组合通常比继承更好,因为它往往会导致设计不那么紧密。

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

托管代码不支持多重继承,维基百科上有一篇文章解释了原因:

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

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

于 2011-06-06T21:28:23.960 回答
3

您不能让一个类既继承自引用类型又继承自本机类型。

于 2011-06-06T21:32:26.497 回答