Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: anonimo12121 en 28 Marzo 2012, 20:01 pm



Título: [c++][Ayuda] Constructor y destructor con array bidimensional.
Publicado por: anonimo12121 en 28 Marzo 2012, 20:01 pm
Bueno el tema es que quiero saber como crear una array bidimensional de un miembro dentro de una clase. y despues destruirlo.

llevo esto de código lo estoy haciendo sin tener puñetera idea. Aunque he mirado ya por internet. a ver si me lo podéis solucionar :!

Código
  1. #include <iostream>
  2. using namespace std;
  3. class c1{
  4.    private:
  5.        int **tabla;
  6.    public:
  7.        c1();//contructor
  8.        ~c1();
  9.        void Crear();//pone valores
  10.        void Print();//imprime en pantalla
  11. };
  12. c1::c1(){
  13.    tabla=new int*[10];
  14.    for(int i=0;i<10;i++)tabla[i]=new int[10];
  15. };
  16. c1::~c1(){
  17.    for(int i=0;i<10;i++)delete[] tabla[i];
  18.    delete[] tabla;
  19. };
  20. void c1::Crear(){
  21.    for(int y=0;y<10;y++)
  22.        for(int x=0;x<10;x++)
  23.            tabla[y][x]=(y*10)+x;
  24. };
  25. void c1::Print(){
  26.    for(int y=0;y<10;y++){
  27.        for(int x=0;x<10;x++)cout << tabla[y][x] << " ";
  28.        cout << endl;
  29.    }
  30. };
  31. int main(int argc,char *argv[]){
  32.    c1 c;
  33.    c.Crear();
  34.    c.Print();
  35.    cout << endl << endl;
  36.    c.~c1();
  37.    c.Print();
  38.    return 0;
  39. };


Título: Re: [c++][Ayuda] Constructor y destructor con array bidimensional.
Publicado por: Eternal Idol en 28 Marzo 2012, 21:07 pm
Hasta llamar al destructor no veo el problema, despues obviamente llamar a Print tal y como esta implementado es un error de logica, la memoria de tabla ya fue liberada. Si llamas al destructor por tu cuenta tene en cuenta que el compilador igual lo va a llamar cuando c salga de su ambito ... no lo llames mejor, no tiene ningun sentido.


Título: Re: [c++][Ayuda] Constructor y destructor con array bidimensional.
Publicado por: anonimo12121 en 28 Marzo 2012, 22:02 pm
Es que estoy haciendo un función para mi proyecto y arreglando código, y la función por ejemplo tiene que resetear los datos de miembros de una clase, y había pensado en utilizar el destructor para volverla al inicio pero creo que estoy pensando mal verdad?.

Debería mejor hacer una función por ejemplo void reiniciar(); y que esta ponga los valores a 0. en vez de liberar memoria.