Ver Mensaje Individual
  #7  
Antiguo 10-11-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.
Responder Con Cita