Ciao a tutti.
Ho realizzato questa matrice generica:
#include <iostream>
using namespace std;
template <class T>
class matrix{
private:
T **array;
unsigned int rows;
unsigned int cols;
public:
matrix(unsigned int r, unsigned int c);
matrix(matrix & m);
T* & operator[](unsigned int r) { return array[r]; }
unsigned int getRows() const { return rows; }
unsigned int getCols() const { return cols; }
T getValue(unsigned int r, unsigned int c) { return array[r][c]; }
void setValue(unsigned int r, unsigned int c, T value) { array[r][c] = value; }
void showArray();
};
template <class T>
matrix<T>::matrix(unsigned int r, unsigned int c) {
rows = r;
cols = c;
array = new T*[r];
for(int i=0; i<r; i++)
array[i] = new T[c];
}
template <class T>
matrix<T>::matrix(matrix & m) {
int i, j;
delete [] array;
rows = m.getRows();
cols = m.getCols();
array = new T*[rows];
for(i=0; i<rows; i++)
array[i] = new T[cols];
for(i=0; i<rows; i++)
for(j=0; j<cols; j++)
array[i][j] = m[i][j];
}
template <class T>
void matrix<T>::showArray() {
int i, j;
for(i=0; i<rows; i++) {
for(j=0; j<cols; j++)
cout << array[i][j] << "|";
cout << endl;
}
}
Avrei la necessità di costruire una matrice di elementi di tipo T data un'altra matrice di elementi di tipo Q.
La gestione della convertibilità tra le due tipologie devo lasciarla al compilatore ed utilizzare eventualmente le eccezioni.
Potete aiutarmi a realizzare questo costruttore? Ad oggi ho provato senza successo...