elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Solucionado] Declarar matriz en clase y dar dimensiones con metodo constructor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] Declarar matriz en clase y dar dimensiones con metodo constructor  (Leído 3,009 veces)
Dezcian

Desconectado Desconectado

Mensajes: 9



Ver Perfil WWW
[Solucionado] Declarar matriz en clase y dar dimensiones con metodo constructor
« en: 30 Diciembre 2014, 18:30 pm »

Citar
Hola! soy nuevo en este foro... ultimamente estoy desarrollando demasiado contenido en C++... Entre mis proyectos tengo una librería de simulación de fisica y algunas otras funciones para el desarrollo de videojuegos... Seguiré pidiendo ayuda sobre nuevas dudas que me surjan en el desarrollo de la misma.

Luego de tanto blabla aqui mi duda... Como puedo hacer que una matriz declarada dentro de una clase obtenga sus dimensiones el metodo constructor (o de que otra forma lo puedo hacer)... No tengo mucha idea de esto, nunca lo habia intentado... Tengo algo como esto y no funciona (como era de esperarse XD)

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class MiClase {
  6. private:
  7.      const int longitudX, longitudY;
  8.      char universo[longitudX][longitudY];
  9.  
  10. public:
  11.      MiClase(int lx, int ly) {
  12.            longitudX = lx;
  13.            longitudY = ly;
  14.      }
  15. }
  16.  
  17. int main() {
  18.    MiClase(4,5);
  19.    return 0;
  20. }
  21.  


« Última modificación: 31 Diciembre 2014, 16:30 pm por Dezcian » En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: Declarar matriz en una clase y dar dimensiones con metodo constructor
« Respuesta #1 en: 31 Diciembre 2014, 07:59 am »

Buenas te dejo mi version tiene mas de lo que querias pero es que me da la imrpresion que querias asignar valores diferentes al arreglo cada vez que creas un objeto

asi que para hacer eso se necesita arreglo dinamicos
aqui te dejo un posible ejemplo te puedes ahorra mucho codigo si haces los arreglos estaticos como seria--->  char universo[10][10];
el inconveniente es que siempre sera el mismo valor para todos los objetos y no podras cambiarlo

Código
  1. //---------------------------------------------------------------------------
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. class MiClase {
  7. public://para fines demostrativos lo pondren en publico pero no es correcto dejar los atributos
  8. //o variables como publicos siempre tiene que ser privadas
  9.  
  10.       int longitudX, longitudY;//las variables no pueden ser constantes
  11.       char **universo; //Arreglo de dos dimensiones dinamicos, por eso usa doble puntero
  12.  
  13. public:
  14.      MiClase(int lx, int ly);//Definimios nuestros constructor
  15.     ~MiClase(); //Destructor del objeto
  16. };
  17.  
  18.  
  19. MiClase::MiClase(int lx, int ly) { //implementamos el constructor
  20.  
  21.   longitudX=lx; //asignamos los valores
  22.   longitudY=ly;
  23.  
  24.  
  25.   universo=new char*[longitudX]; //crear la primera dimension
  26.   for(int i=0;i<longitudX;i++){
  27.      universo[i]=new char[longitudY];//creamos las dimensiones de adentro
  28.   }
  29. }
  30.  
  31. MiClase::~MiClase(){//Destructor de objeto , este se llama automaticametne y libera la memoria del arreglo bidimensional
  32.  
  33.   for(int i=0;i<longitudX;i++){
  34.      delete[] universo[i];//eliminar la primera dimesion del arreglo
  35.   }
  36.  
  37.   delete[] universo; //elimina la segunda dimension
  38. }
  39.  
  40. //------------------------------------------------------------------------------------------------------------------------------
  41.  
  42. int main() {
  43.  
  44.   MiClase objeto(4,5);//cramos el objeto
  45.  
  46.   for(int i=0;i<objeto.longitudX;i++){ //lo recorremos solo para ver que funciona
  47.     for(int j=0;j<objeto.longitudY;j++){
  48.        objeto.universo[i][j]='x';//le asignamos un caracteer
  49.        cout<<objeto.universo[i][j]<<" ";
  50.  
  51.     }
  52.     cout<<endl;
  53.   }
  54.  
  55.   cin.get();
  56.   return 0;
  57. }

Espero te ayude si tienes dudas avisa saludos...


En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
Dezcian

Desconectado Desconectado

Mensajes: 9



Ver Perfil WWW
Re: Declarar matriz en una clase y dar dimensiones con metodo constructor
« Respuesta #2 en: 31 Diciembre 2014, 16:29 pm »

Hola crack81! muchas gracias por tu ayuda, me ha servido mucho... Había intentado algo así pero me faltaba esta parte:

Código
  1. universo=new char*[longitudX]; //crear la primera dimension
  2.   for(int i=0;i<longitudX;i++){
  3.      universo[i]=new char[longitudY]; //<---- Esto me faltaba xD
  4.   }

muchas gracias, doy el tema por solucionado :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
no me reconoce el constructor la sub clase...
Java
~[uNd3rc0d3]~ 2 3,391 Último mensaje 31 Agosto 2008, 22:18 pm
por ~[uNd3rc0d3]~
Declarar e inicializar matriz de objetos
Java
alzehimer_cerebral 1 5,252 Último mensaje 17 Noviembre 2009, 19:07 pm
por Leyer
especificar dimensiones matriz
Programación C/C++
Fer995 3 2,777 Último mensaje 19 Noviembre 2010, 15:31 pm
por Fer995
¿Como llamar al metodo de una clase sin pasar por su constructor?
Java
GaudyG 5 7,758 Último mensaje 14 Junio 2011, 00:22 am
por Stoya
Reservar memoria con new a una clase con varios elementos y constructor.
Programación C/C++
anonimo12121 7 4,451 Último mensaje 17 Febrero 2012, 15:39 pm
por naderST
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines