Sto scrivendo un tipo Matrix
, e vorrei il seguente codice per definire una matrice di 2,2
in%, mettere il suo primo elemento a 3 e lanciare un'eccezione al raggiungimento della terza riga:
Matrix<int> a(2,2);
a[0][0] = 3;
int b = a[10][28];
Per questo, ho bisogno di sovraccaricare " operator[][]
". Lasciatemi spiegare ulteriormente:
- La mia matrice è definita come un modello con tipo di parametro
T
e memorizza i suoi elementi in un array bidimensionale definito comeT** content
. - Il mio punto di sovraccarico "
operator[][]
" è di evitare una violazione di accesso e generare un'eccezione che può essere gestita in seguito (una violazione di accesso è not un'eccezione). - Sovraccaricare
operator[]
una volta mi avrebbe permesso di usarea[0]
ea[0]
restituirebbe un tipoT*
. - Per sovraccaricare il "
operator[][]
" diMatrix
, in realtà ho bisogno di sovraccaricare iloperator[]
del mio sopramenzionatoT*
di tipo restituito. - Poiché
T*
è un array, il suooperator[]
è già definito e funziona bene, quindi non c'è motivo di cambiarlo. - Anche se l'ho fatto, non potrei fare nulla di rilevante per il mio punto perché è al di fuori della classe
Matrix
.
Come posso risolvere questo problema?
Potrei fare il primo sovraccarico operator[]
restituire un nuovo oggetto MatrixRow
con cui posso lavorare ulteriormente, ma non è una soluzione piuttosto pesante?