Salve ragazzi, sono nuovo sia nel forum ma soprattutto nuovo con la programmazione ad oggetti.
Per un esercizio devo creare una classe matrice in C++ che gestisce un array dinamico e creare distruttore, costruttore, metodi per il prodotto e trasposta.
Nel file "matrice.h" la definizione della classe è questa (omettendo gli altri metodi che per ora non mi interessano):
#include <iostream>
class matrice {
private:
int righe;
int colonne;
double **elementi;
public:
matrice(int r, int c); //Costruttore
~matrice(); //Distruttore
matrice(const matrice &altra); //Costruttore di copia
void stampa(); //Stampa matrice
matrice& operator=(const matrice& altra); //Overloading operatore assegnamento
};
Nel file "matrice.cpp" ho creato le seguenti funzioni:
#include <iostream>
#include "matrice.h"
//Costruttore
matrice::matrice(int r, int c){
righe = r;
colonne = c;
elementi = new double*[righe];
for (int i=0; i<righe; i++){
elementi[i] = new double[colonne];
for(int j=0; j<colonne; j++){ //Riempio la matrice per testare il funzionamento
elementi[i][j] = j;
}
}
}
//Distruttore
matrice::~matrice(){
for (int i=0; i<righe; i++){
delete[] elementi[i];
}
delete[] elementi;
}
//Costruttore di copia
matrice::matrice(const matrice &altra)
{
righe = altra.righe;
colonne = altra.colonne;
elementi = new double*[righe];
for (int i=0; i<righe; i++){
elementi[i] = new double[colonne];
for(int j=0; j<colonne; j++){
elementi[i][j] = altra.elementi[i][j];
}
}
}
//Stampa matrice
void matrice::stampa(){
using namespace std;
int i, j;
for(i=0; i<righe; i++){
for(j=0; j<colonne; j++){
cout << elementi[i][j] << "\t";
}
cout << endl;
}
}
//Overloading operatore assegnamento
matrice& matrice::operator=(const matrice& altra)
{
//Non so come fare!!!!
}
Innanzitutto vorrei capire se ho scritto correttamente il metodo distruttore, costruttore e costruttore di copia.
Inoltre non so davvero come scrivere il codice per l'operatore di assegnamento "=". Ho capito che devo de-allocare la matrice attuale e riallocarla dinamicamente con le dimensioni e gli elementi della matrice passata come parametro ma non ho capito come fare.
Qualcuno mi può aiutare?