Ciao a tutti.
Ho ricominciato da capo a scrivere la mia classe per rappresentare delle matrici. Ho deciso di utilizzare i templates e i puntatori (sono a conoscenza di std::vector, std::array, std::valarray, ... ma preferisco aprofondire l'argomento puntatori).

Queste sono le prime semplici righe che ho scritto. Il codice compila ma... é corretto? :)

codice:
#ifndef MATRIX_H
#define MATRIX_H

#include <iostream>

template <typename T = double>
class Matrix
{
public:
	Matrix(size_t, size_t);
	virtual ~Matrix();
	
	void set(const T&);

private:
	T** data;
	size_t row;
	size_t col;
};

#endif

template <typename T>
Matrix<T>::Matrix(size_t r, size_t c)
: row(r), col(c), data(new T*[row])
{
	for(int i(0); i < row; i++)
	{
		data[i] = new T[col];
	}
}

template <typename T>
void Matrix<T>::set(const T& d)
{
	for(int i(0); i < row; i++)
	{
		for(int j(0); j < col; j++)
		{
			data[i][j] = d;
		}
	}
}

template <typename T>
Matrix<T>::~Matrix()
{
	for(int i(0); i < row; i++)
	{
		delete data[i];
	}
	
	delete data;
}
Una domanda. Ho messo come tipo di default double prima della definizione della classe; devo farlo anche prima di ogni funzione, distruttore o costruttore?

Grazie,
R.