C ++ / CLI: наследование от одного класса CLR, нескольких классов C ++ - PullRequest
3 голосов
/ 07 июня 2011

В C ++ / CLI я хочу иерархию классов, подобную следующей:

Foo
  FooA : Foo, ClrClassA
  FooB : Foo, ClrClassB

Возможно ли для FooA совместно использовать (не CLR) базовый класс, а также наследовать от отдельных классов CLR?Если нет, то каким образом FooA и FooB могли бы совместно использовать общий код?

Ответы [ 2 ]

5 голосов
/ 07 июня 2011

Вообще говоря, композиция часто лучше, чем наследование , так как она имеет тенденцию приводить к менее тесно связанным конструкциям.

Если вы смешиваете управляемый и неуправляемый код, в моем опыте, как правило, проще включать неуправляемый код в управляемый код, чем наоборот.

Множественное наследование не поддерживается для управляемого кода, и есть статья в Википедии , в которой объясняется, почему:

Управляемый C ++ и использование классов и объектов, основанных на классах, остаются распространенными, как в Visual C ++. Единственное существенное изменение в Managed C ++ состоит в том, что возможности множественного наследования не поддерживаются. Это из-за ограничения CLR. Класс, управляемый в сборщике мусора CLR, не может наследовать более одного класса

Трудно дать хороший ответ относительно как лучше объединить ваши классы / функциональность, не зная почему вы хотите объединить классы ...

3 голосов
/ 07 июня 2011

Вы не можете иметь класс, унаследованный как от ссылочного, так и от нативного типа.

...