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 :!
#include <iostream>
using namespace std;
class c1{
private:
int **tabla;
public:
c1();//contructor
~c1();
void Crear();//pone valores
void Print();//imprime en pantalla
};
c1::c1(){
tabla=new int*[10];
for(int i=0;i<10;i++)tabla[i]=new int[10];
};
c1::~c1(){
for(int i=0;i<10;i++)delete[] tabla[i];
delete[] tabla;
};
void c1::Crear(){
for(int y=0;y<10;y++)
for(int x=0;x<10;x++)
tabla[y][x]=(y*10)+x;
};
void c1::Print(){
for(int y=0;y<10;y++){
for(int x=0;x<10;x++)cout << tabla[y][x] << " ";
cout << endl;
}
};
int main(int argc,char *argv[]){
c1 c;
c.Crear();
c.Print();
cout << endl << endl;
c.~c1();
c.Print();
return 0;
};
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.
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.