Salve a tutti,
ho un problema: quando assegno dei valori a dei double anche parte di matrici si sovrascrivono.
Riporto il codice che va a sovrascrivere la matrice maT in modo inspiegabile per me.

Potete darmi una mano, sono disperato.

GRAZIE

codice:
\\\\\\\\\\\\\\\\\\\ MAIN \\\\\\\\\\\\\

//Istanzio le classi
CCAD_Elaborazioni Cad;
CUtilityFile FileUtility_src;

//dichiarazioni e inizializzazioni
double X,Y,Z,A_fi,B_teta,C_psi;
X = 0;
Y= 0;
Z = 0;
A_fi = 0;
B_teta = 0;
C_psi = 0;

double maT_base_offset[4][4];
double maT[4][4];

// inizializzo le matrici con una semplice funzione
GeneraMatIdentita(Matrice);
GeneraMatIdentita(maT_base_offset);

//apro file di testo e lo carico in un vettore
...
//

//scorro il vettore e cerco la tiga interessata
for(int indice_linea=0;indice_linea<max_ind_linea_src;indice_linea++)
{
	// assegno alla stringa line una riga alla volta del vettore
	string line = FileUtility_src.GetLineaString(indice_linea);

	cerco in ogni riga del vettore "Base_Offset"
	int pos = line.find("Base_Offset = {",0);
	if(pos!=string::npos)
	{
		// trovata la riga: Base_Offset = {X 1, Y 2, Z 3, A 4, B 5, C 6}

		//in questo punto la matrice è corretta:
		// maT = [ 1 0 0 0
		//		      0 1 0 0
		//		      0 0 1 0
		//		      0 0 0 1 ]

//PROBLEMA>>>>>>>>>>>>>>>>>>>>>>
		// estraggo dalla riga i valori della sestina e li metto in double 
                //(la funzione è riportata sotto)
		Cad.EstrazioneDatiRigaDat(line,X, Y, Z, A_fi, B_teta, C_psi);

		//la matrice diventa:
		//  maT = [ 1 0 0 0
		//		      0 1 0 0
		//		      0 0 1 6
		//		      5 4 3 2 ]
		//notare la somiglianza dell'ultima riga della matrice con con la linea letta 
//PROBLEMA>>>>>>>>>>>>>>>>>>>>

		// costruisco la matrice dalla sestina
		CostruzioneMatOmogeneaTrasformazione(X, Y, Z, A_fi, B_teta, C_psi, maT_base_offset);			
	}
}

.......

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

//
//Estrae dalla riga del file dat i valori di
//X, Y, Z, A_fi, B_teta, C_psi
//
void CCAD_Elaborazioni::EstrazioneDatiRigaDat(string linea_dat, double &O_X, double &O_Y, double &O_Z, double, &O_A, double &O_B, double &O_C)
{	   
	//questa funzione avrebbe dovuto estrare dei numeri dalla stringa che riceveva e
        //restituire dei double, ma l'ho semplificata per evitare errori inutili
	
        O_X	= 1;
	O_Y	= 2;
	O_Z	= 3;
	O_A	= 4;
	O_B	= 5;
	O_C	= 6;
	
}