在 C++/CLI 中,我想要一个类似于以下的类层次结构:
Foo
FooA : Foo, ClrClassA
FooB : Foo, ClrClassB
FooA 是否可以共享一个(非 CLR)基类,同时也从单独的 CLR 类继承?如果不是,那么 FooA 和 FooB 共享公共代码的最佳方式是什么?
在 C++/CLI 中,我想要一个类似于以下的类层次结构:
Foo
FooA : Foo, ClrClassA
FooB : Foo, ClrClassB
FooA 是否可以共享一个(非 CLR)基类,同时也从单独的 CLR 类继承?如果不是,那么 FooA 和 FooB 共享公共代码的最佳方式是什么?
一般来说,组合通常比继承更好,因为它往往会导致设计不那么紧密。
如果您混合托管和非托管代码,根据我的经验,将非托管代码包装在托管代码中通常更容易,反之亦然。
托管代码不支持多重继承,维基百科上有一篇文章解释了原因:
托管 C++ 以及类和基于类的对象的使用仍然很普遍,就像在 Visual C++ 中一样。托管 C++ 中对此的唯一主要更改是不支持多重继承的功能。这是因为 CLR 的限制。在 CLR 的垃圾收集器下管理的类不能继承多个类
在不知道为什么要组合这些类的情况下,很难就如何最好地组合您的类/功能给出一个好的答案......
您不能让一个类既继承自引用类型又继承自本机类型。