Originariamente inviato da shodan
Alcune osservazioni.
L'intera definizione di classe e delle funzioni va messo tra:

non solo la definizione della classe.

Le funzioni definite fuori dal corpo della classe vanno specificate inline.

Definire il template in quel modo è scomodo, dato che per avere il tipo di default (il double) sei costretto a scrivere:
codice:
Matrix<> ntx
senza avere nessun vantaggio particolare.

Io abbandonerei il T** in favore del T* (simulando la matrice tramite un array). E' più semplice da gestire e non ha contro indicazioni.

Nota a margine.
Potresti sperimentare l'uso di un allocatore (in stile STL).
Ti aspettavo!

Ho messo solo l'interfaccia nelle direttive per il preprocessore perché normalmente é solo quella che si trova nei .h. In pratica é tutto il .h che deve stare tra le direttive (quindi nel caso dei template anche le definizioni)?

Dici solamente di togliere il valore per default e basta? Effettivamente serve a poco... (Era più che altro per far vedere che la concezione era per i double).

Perché andrebbero specificate inline le funzioni definite fuori dal corpo della classe? Non vanno definite inline solo funzioni corte a cui si fa riferimento estremamente spesso? O dici questo per aumentare l'efficienza, così il codice viene eseguito senza "balzi"?

Dici di fare T*(new [row * col]) e poi riferirsi all'elemento (i,j) come [i * col + j]? È più efficente? Il problema é che voglio far partire gli indici da 1, quindi agni volta avrei due operazioni in più (le sottrazioni): [(i-1)* col + (j-1)]. Cambia l'efficienza o non é minimamente rilevante?

Non avevo sentito parlare di un allocatore... Ho guradato un po' su C++ reference ma non ho ben capito come utilizzaro nel mio caso... Potresti farmi un breve esempio (anche stupido)?

Grazie mille! ; )