Mi chiedevo se qualcuno sa quali sono i limiti sull'operatore di conversione/typecast?Ci sono dei limiti sui tipi nell'operatore typecast?
Così, per esempio, possono avere i seguenti operatori di override:
class Test {
operator int() { return 0; };
operator int*() { return nullptr; };
}
Per una funzione regolare, mi potrebbe anche avere un puntatore di tipo array. Per esempio.
int (*MyFunc())[4] { return nullptr; };
Tuttavia, non so come fare la stessa cosa per l'operatore di conversione (o se è ancora legale per farlo). Ho provato alcune varianti e VS2010 e nessuno funziona. (Come :)
operator int (*())[4] { return nullptr; };
operator int(*)[4]() { return nullptr; };
non sono sicuro se questa è una limitazione in VS2010 o se v'è un limite generale sui tipi che possono essere utilizzati nella operatore di conversione. Ho provato a cercare lo standard online senza fortuna. Qualcuno sa? Prima che qualcuno chieda "perché vorresti farlo?", È per il codice generato automaticamente. Sebbene non preveda di ottenere il puntatore sull'ingresso dell'array, mi piacerebbe essere in grado di produrre il codice se è legale in C++.
Grazie. Questo ha risposto esattamente alla mia domanda. –
Commento downvote? – GManNickG