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