Почему неуправляемая структура не может быть членом управляемого класса?

Я знаю, что в C++/CLI нельзя использовать неуправляемые типы при определении управляемого класса:

public struct Unmanaged
{
    int x;
    int y;
};

public ref class Managed
{
    int one;
    Unmanaged two;  //error C4368
};

Хотя я не понимаю почему. Неуправляемый— это просто набор нативных типов — его размер известен, конечно, он (и под ним я подразумеваю блок памяти, который его определяет) будет перемещаться вместе с «блоком памяти», то есть Managedвнутри «управляемой кучи», и любое смещение, хранящееся в метаданных, останется действительным, не так ли? Так же, как если бы было объявлено целое число или число с плавающей запятой?

Почемумы не можем смешивать типы?

14
задан sebf 9 May 2012 в 20:00
поделиться