Básicamente la cosa sería algo así:
Código:
class TMatriz
{
private:
char **Matriz;
int Filas;
int Columnas;
public:
TMatriz();
TMatriz(int Nfilas, int NColumnas); // Constructor
TMatriz (const TMatriz&); //Constructor de Copia
TMatriz &operator=(const TMatriz&);
};
// Constructor por defecto
TMatriz::TMatriz(): Filas(0), Columnas(0), Matriz(0)
{
}
TMatriz::TMatriz(int Nfilas, int NColumnas): Filas(Nfilas), Columnas(NColumnas),
Matriz(0)
{
Matriz = new char *[NColumnas];
for(int i=0; i<NColumnas; i++)
Matriz[i] = new char [Nfilas];
}
// Constructor copia
TMatriz::TMatriz(const TMatriz& E): Filas(0), Columnas(0), Matriz(0)
{
*this = E;
}
// Sobrecarga del operador asignación
TMatriz& TMatriz::operator=(const TMatriz &E)
{
// Libero mamoria
if(Matriz){
for(int i=0; i<Columnas; i++) delete [] Matriz[i];
delete [] Matriz;
}
// Copio la Matriz
Columnas = E.Columnas;
Filas = E.Filas;
Matriz = new char *[Columnas];
for(int i=0; i<Columnas; i++){
Matriz[i] = new char [Filas];
CopyMemory(Matriz[i], E.Matriz[i], Filas);
}
return *this;
}
Un ejemplo de uso:
Código:
TMatriz Mt1(10,10);
TMatriz Mt2(Mt1); // Con el constructor copia
TMatriz Mt3 = Mt1; // Asignando
Saludos.