Salve a tutti
sto cercando di implementare una classe di matrici
per prima cosa voglio scrivere una funzione che assegna ad un oggetto matrice un array bidimensionale dichiarato nel main
il codice è il seguente
#include<iostream>
#include<iomanip>
using namespace std;
class Double2Array{
public:
Double2Array(int=10, int=10);
Double2Array(const Double2Array &); //costruttori
~Double2Array(); //distruttore
void print();
void assegna(int,int,double);
private:
int row, col;
double **p;
};
//costruttore - inizializza array
Double2Array::Double2Array(int rows, int cols){
row=rows;
col=cols;
p = new double*[row];
for (int i=0;i<row;i++){
p[i] = new double[col];
for (int j=0;j<col;j++)
p[i][j]=0.;
}
}
//costruttore copia
Double2Array::Double2Array(const Double2Array &x) : row(x.row),col(x.col)
{
p = new double*[row];
for (int i=0;i<row;i++){
p[i] = new double[col];
for (int j=0;j<col;j++)
p[i][j]=x.p[i][j];
}
}
//distruttore
Double2Array::~Double2Array(){
for (int j=0;j<col;j++)
delete[]p[j];
delete []p;
}
//print
void Double2Array::print(){
for (int i=0;i<row;i++)
{
for (int j=0;j<col;j++){
cout << setw(6) << setiosflags(ios::fixed | ios::showpoint) << setprecision(2) << p[i][j];
}
cout << endl;
}
}
//funzione assegnamento
void Double2Array::assegna(int ii, int jj, double valore){
p[ii][jj]=valore;
}
int main(){
const int a=2,b=3;
double xx[a][b]={{1,3,5.2},{3.5,6.,0.1}};
Double2Array A(a,b);
for (int i=0;i<a;i++)
for (int j=0;j<b;j++)
A.assegna(i,j,xx[i][j]);
A.print();
return 0;}
in poche parole vorrei raggruppare queste righe di codice in una funzione che ha come
parametro l'array inizializzato da me (in questo caso xx)
for (int i=0;i<a;i++)
for (int j=0;j<b;j++)
A.assegna(i,j,xx[i][j]);
il problema è che passare array con 2 o più dimensioni è più complicato del previsto, per via della seconda dimensione dell'array che è difficile passare come parametro.
ho provato ad implementare una funzione del tipo
funzione (int dim1, int dim2, double y[dim1][dim2])
ma ottengo vari errori di compilazione (sia che la funzioene sia di classe o friend)
c'è un modo per risolvere il problema?
grazie