[ create a new paste ] login | about

Link: http://codepad.org/P39retCf    [ raw code | output | fork ]

C++, pasted on May 26:
// Tabla.cpp: ejemplo de Tabla de cadenas
//Mayo 2015 Tutoriales En Linea

#include <iostream>
#include <cstdio>
#include <cstring>

////// INICIO Tabla
template <class T>
class Tabla {
  public:
   Tabla(int nElem);
   ~Tabla();
   T& operator[](int indice) { return pT[indice]; }
   int NElementos() const { return nElementos; }

  private:
   T *pT;
   int nElementos;
};

// DefiniciĆ³n:
template <class T>
Tabla<T>::Tabla(int nElem) : nElementos(nElem) {
   pT = new T[nElementos];
}

template <class T>
Tabla<T>::~Tabla() {
   delete[] pT;
}
////// FINAL Tabla

////// INICIO Cadena

using std::strcpy;
using std::strlen;

class Cadena {
  public:
   Cadena(char *cad) {
      cadena = new char[strlen(cad)+1];
      strcpy(cadena, cad);
   }
   Cadena() : cadena(NULL) {}
   Cadena(const Cadena &c) : cadena(NULL) {*this = c;}
   ~Cadena() { if(cadena) delete[] cadena; }
   Cadena &operator=(const Cadena &c) {
      if(this != &c) {
         if(cadena) delete[] cadena;
         if(c.cadena) {
            cadena = new char[strlen(c.cadena)+1];
            strcpy(cadena, c.cadena);
         }
         else cadena = NULL;
      }
      return *this;
   }
   const char* Lee() const {return cadena;}
   
  private:
   char *cadena;
};

ostream& operator<<(ostream &os, const Cadena& cad) {
   os << cad.Lee();
   return os;
}
////// FIN Cadena
 
using namespace std;
 
const int nElementos = 5;

int main() {
   Tabla<Cadena> TablaCad(nElementos);
   char cadena[20];
   
   for(int i = 0; i < nElementos; i++) {
      sprintf(cadena, "Numero: %2d", i);
      TablaCad[i] = cadena;
   }
      
   strcpy(cadena, "Modificada");

   for(int i = 0; i < nElementos; i++) 
      cout << "TablaCad[" << i << "] = " 
           << TablaCad[i] << endl;

   return 0;
}


Output:
1
2
3
4
5
TablaCad[0] = Numero:  0
TablaCad[1] = Numero:  1
TablaCad[2] = Numero:  2
TablaCad[3] = Numero:  3
TablaCad[4] = Numero:  4


Create a new paste based on this one


Comments: