SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: bandro en Miércoles 9 de Junio de 2004, 18:54

Título: ¿como Reservar Memoria Para Atributo Private...
Publicado por: bandro en Miércoles 9 de Junio de 2004, 18:54
Hola a todos...

A ver si me podian ayudar con esto...pues soy bastante novato en la programacion orientada a objetos y no tengo claro como se haria esto...mis ideas son estas dos:

tengo por ejemplo este atributo
 
private:

      int *enteros

public :

      int get_enteros() { return enteros; }
      int get_enteros(int i) { return enteros; }
      set_enteros(int *datos) { enteros = datos; }
      set_enteros(int *dato, int i) { enteros = dato; }

y ahora vienen mis dos opciones

1) hacer un metodo para la reserva de memoria

      void reservar_enteros(int i) { enteros = new int; }

2) hacer en la funcion donde se reserva la memoria algo asi

      int *puntero_aux;

      puntero_aux = new int[lo_que_sea];
      set_enteros(puntero_aux);

Vamos, que las dos digo yo q funcionarían pero me gustaria saber vuestra opinion de ver cual es mas correcta...
Saludos y gracias por adelantado
 :hola:
Título: Re: ¿como Reservar Memoria Para Atributo Private...
Publicado por: nicokiki en Miércoles 9 de Junio de 2004, 20:48
Hola!!!!!!

El metodo q reserva memoria puede no funcionar bien si hubo un problema al alocar, por lo q este deberia devolver algun tipo de error (un int, un char, lo q vos quieras q represente tu posible error).

Algo asi:

Código: Text
  1.  
  2. char* str = new char[TAMANIO_X];
  3. if (str == NULL)
  4.   return ERROR_MEMORIA;
  5. return OK;
  6.  
  7.  

Salu2!!!!!!
Título: Re: ¿como Reservar Memoria Para Atributo Private...
Publicado por: bandro en Jueves 10 de Junio de 2004, 00:01
Tonces opcion 1 o opcion 2??
Título: Re: ¿como Reservar Memoria Para Atributo Private...
Publicado por: QliX=D! en Viernes 11 de Junio de 2004, 07:05
Pues, conceptualmente mis queridisimos amigos, los dos metodos estan mal.
En C++ los objetos tienen constructores, que no son mas que metodos con el mismo nombre que la clase (exactamente el mismo) y que sirven exactamente para eso, para crear y setear todas las variables internas de una clase (o sea las privadas).
Despues para eliminar esa memoria existen los destructores, que son tambien metodos con el mismo nombre que la clase, pero con un ñiflo (~) adelante del mismo.

Pero bueno, fijate que en el tutorial (o curso) que estes haciendo, en los apuntes habla sobre los mismos para uqe te quites todas las dudas, si no , google es tu mejor amigo :D
Es muy largo el tema para tratarlo todo a estas horas de la noche (2:04)

Saludos.
Título: Re: ¿como Reservar Memoria Para Atributo Private...
Publicado por: bandro en Lunes 14 de Junio de 2004, 12:32
Sí, todo el tema de constructores y destructores ya lo conozco...pero eso es valido si tienes claro toda la memoria que necesitas cuando se crea el objeto de la clase...yo lo que necesito es primero crear el objeto y luego a partir de una serie de tareas q realizo ya se la memoria que necesito...asi q no me vale reservar en el constructor...
Título: Re: ¿como Reservar Memoria Para Atributo Private...
Publicado por: nicokiki en Sábado 19 de Junio de 2004, 05:13
Hola Bandro!

Antes q nada queria aclarar que no habia entendido la 1º pregunta y lo que dice QliX=D! es totalmente verdadero. Yo cometi una animalada.

Bandro, vos en el constructor alocas la memoria que necesitas. Si queres alocar algo de acuerdo a lo q vayas a necesitar, pasale el tamaño por paramtero al constructor y listo


Salu2!!!!!