Sé que en C++/CLI no se puede utilizar tipos no administrados cuando se define una clase administrada:¿Por qué una estructura no administrada no puede ser miembro de una clase administrada?
public struct Unmanaged
{
int x;
int y;
};
public ref class Managed
{
int one;
Unmanaged two; //error C4368
};
No entiendo por qué sin embargo. Unmanaged
es simplemente una colección de tipos nativos: su tamaño es conocido, seguramente (y me refiero al bloque de memoria que lo define) se moverá con el 'bloque de memoria' que es Managed
dentro del 'montón administrado' y cualquier compensación que se almacene en los metadatos seguirá siendo válida, ¿no? ¿Como si se declarara un entero o una carroza?
¿Por qué no podemos mezclar tipos?
¿Quién espera que sea capaz de responder a una pregunta con autoridad? – ildjarn
@ildjarn bien, iba a verificar el código fuente de C++/CLI y escribir una buena respuesta ... owait –
Me temo que no lo entiendo; alguien con más conocimiento del funcionamiento C++/CLI que yo? Al diseñar el compilador, alguien debe haber asumido lo mismo en mi publicación (¡o la suposición es completamente errónea!), Y luego se dio cuenta de que, por alguna condición, no era cierto, de ahí el error, solo tenía curiosidad en cuanto a lo que era esa condición En la publicación de blog Tony enlazado se explicó que la asignación de tipos nativos en el montón administrado no se permitió para evitar que las personas abusaran de pin_ptr para devolver esas 'instancias' al código no administrado. – sebf