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