So che in C++/CLI non si può utilizzare tipi non gestiti quando si definisce una classe gestita:Perché una struttura non gestita non può essere un membro di una classe gestita?
public struct Unmanaged
{
int x;
int y;
};
public ref class Managed
{
int one;
Unmanaged two; //error C4368
};
Non capisco perché però. Unmanaged
è semplicemente una raccolta di tipi nativi - la sua dimensione è nota, sicuramente (e con essa intendo il blocco di memoria che la definisce) verrebbe spostata con il "blocco di memoria" che è Managed
all'interno dell'heap gestito e qualsiasi offset memorizzato nei metadati rimarrà valido, no? Proprio come se fossero stati dichiarati un intero o un float?
Perché non è possibile combinare tipi diversi?
Chi ti aspetti di poter rispondere in modo autoritario a una domanda del genere? – ildjarn
@ildjarn bene, io stavo per controllare il codice sorgente C++/CLI e scrivere una bella risposta ... owait –
Temo non capisco; qualcuno con più conoscenza del funzionamento C++/CLI di me? Durante la progettazione del compilatore, qualcuno deve aver avuto la stessa ipotesi che asserisco nel mio post (o l'ipotesi è completamente sbagliata!), E poi ho capito che per alcune condizioni non era vero, quindi l'errore - ero solo curioso per quanto riguarda quella condizione. Nel post sul blog di Tony legato è stato spiegato che l'attribuzione dei tipi nativi sul heap gestito è stato annullato per fermare le persone che abusano pin_ptr per tornare quei 'casi' di codice non gestito. – sebf