Il modo più semplice per fare questa domanda è con un certo codice:puntatore cast ad un array di dimensioni fisse in istruzione return
struct Point
{
int x;
int y;
int z;
int* as_pointer() { return &x; } // works
int (&as_array_ref())[3] { return &x; } // does not work
};
as_pointer
compilazioni, as_array_ref
non lo fa. Un cast sembra essere in ordine ma non riesco a capire la sintassi appropriata. Qualche idea?
Quindi vuoi che il compilatore faccia finta che 'x' sia, in effetti, una matrice di tre' int's? Non c'è alcuna garanzia che questo funzionerà; i compilatori possono aggiungere padding tra i membri dei dati in modi diversi dal modo in cui dispongono gli array. –