La funzione passo restituisce un vettore lineare, ottenuto con il metodo di Eulero, ovvero:
virtual VettoreLineare Eulero::Passo(double t, VettoreLineare g, double h){
VettoreLineare vec= g+_f->Eval(t,g)*h;
return vec;
};
//non l'ho copiato, l'ho riscritto così su due piedi, nell'originale non ci sono errori di compilazione, perdonatemi gli eventuali errori.
dove _f è una funzione (classe definita in un altro file) a valori vettoriali che fa parte dei datamembri privati della classe e Eval è un suo metodo che semplicemente restituisce il valore della funzione (notare che in questo caso ho usato la sintassi che funziona, e infatti l'uguaglianza funziona).
In realtà l'overloading dell'operatore l'avevo anche fatto in un esercizio precedente, con un main molto semplificato; in parole povere (la classe vettorelineare era la stessa):
VettoreLineare A(N);
VettoreLineare B(N);
VettoreLineare C(N);
C=A+B;
e il programma mi dava lo stesso errore (Ho verificato che anche la sola uguaglianza, senza la somma, dà lo stesso errore). Il costruttore utilizzato in questo caso assegnava le zone di memoria per un array (puntatore) di N componenti, azzerandole tutte.
Se necessario posso quotare tutto il programma, solo non volevo disturbare troppo