#define ROW 3
#define COL 4
class Matrix
{
private:
int mat[ROW][COL];
//.....
//.....
};
int main()
{
Matrix m;
int a = m[0][1]; // reading
m[0][2] = m[1][1]; // writing
}
Penso che non sia possibile sovraccaricare direttamente [] [].Come sovraccaricare l'operatore di indice di array per la classe wrapper di array 2D?
Penso di doverlo indirettamente ma come implementarlo?
Un buon ottimizzatore potrebbe modificare la versione proxy in un codice altrettanto efficiente come 'operator()'? – GManNickG
Dipende dal compilatore. Ma mi piace rendere l'uso dei miei oggetti il più intuibile possibile. Più è naturale usare l'oggetto, meno è probabile l'operabilità per gli errori. Personalmente preferisco il proxy ma sei sei una mezza l'altra per questa situazione e non potrei dire in modo definitivo che uno è migliore dell'altro. –
Sì, ho sempre usato 'operator()' ma penso che userò un proxy questa volta (scrivo motori di gioco) e vedere se crea problemi. Non riesco a immaginare che sarebbe troppo difficile per il compilatore renderlo altrettanto veloce, dal momento che avrà la definizione completa di tutti gli operatori. – GManNickG