Я знаю, что в С++/CLI нельзя использовать неуправляемые типы при определении управляемого класса:
public struct Unmanaged
{
int x;
int y;
};
public ref class Managed
{
int one;
Unmanaged two; //error C4368
};
Я не понимаю, почему. Unmanaged
- это просто набор родных типов - его размер известен, конечно, он (и под ним я подразумеваю блок памяти, который его определяет) будет перемещен с "блоком памяти", который Managed
внутри "управляемая куча", и любое смещение, хранящееся в метаданных, останется в силе, нет? Как будто было объявлено целое число или float?
Почему мы не можем смешивать типы?