Foros del Web » Programación para mayores de 30 ;) » C/C++ »

No devuelve lo correcto

Estas en el tema de No devuelve lo correcto en el foro de C/C++ en Foros del Web. Buenas, estoy trabajando con wxDevCpp. Bien... el tema es que cree una clase llamada Person, lo cual solo contiene 2 valores, nombre y apellido. Ambos ...
  #1 (permalink)  
Antiguo 01/08/2009, 09:44
 
Fecha de Ingreso: julio-2008
Mensajes: 140
Antigüedad: 15 años, 9 meses
Puntos: 2
No devuelve lo correcto

Buenas, estoy trabajando con wxDevCpp. Bien... el tema es que cree una clase llamada Person, lo cual solo contiene 2 valores, nombre y apellido. Ambos son un array de char (char []).

Al principio, le pasaba los dos valores en el constructor. Es decir:

Person(char * nombre, char * apellido)
{
y aca el "strcpy" para cada valor.
}

Despues cree un metodo para devolver cada valor. Es decir, Nombre() y Apellido(). Ambos devuelve un puntero de char (char *).

El tema es que cuando uso estos metodos desde el formulario, me devuelve el ultimo valor asignado.

Es decir, ejemplo:

strcpy(var_nombre,nombre); // Esto en el
strcpy(var_apellido, apellido); // Constructor

Cuando yo quiero devolver las variables, me devuelve SIEMPRE el apellido, haya ejecutado Nombre() o Apellido(). Demas esta decir que devuelven variables diferentes, no soy tan boludo :P


Despues probe asignar los valores en diferentes metodos. Pero lo mismo...

Alguna idea de que puede ser? algo tan basico y no me lo hace bien...
  #2 (permalink)  
Antiguo 02/08/2009, 19:06
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: No devuelve lo correcto

Tal vez si pones el código de los métodos Nombre() y Apellido te podamos ayudar.
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter
  #3 (permalink)  
Antiguo 04/08/2009, 06:20
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: No devuelve lo correcto

La clase tambien puede dar alguna pista si el problema esta en las propiedades ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #4 (permalink)  
Antiguo 04/08/2009, 21:17
 
Fecha de Ingreso: julio-2008
Mensajes: 140
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: No devuelve lo correcto

lo unico que hacen los metodos esos es devolver la variable, nada mas.

Igualmente lo solucione, no se porque, pero si no le asigno un tamaño fijo al array de char, usan la misma posicion de memoria (eso pensaria yo como trabaja, ya que siempre devuelve la ultima asignada).

Asique, con ponerle un tamaño lo toma. Pero... como podria hacer un "string" sin limite?

PD: No le busquen los errores de novato, conmigo no los van a encontrar :)
  #5 (permalink)  
Antiguo 05/08/2009, 00:03
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: No devuelve lo correcto

En realidad ese era un error de novato clarisimo y por eso te pedi la definicion de la clase. Usa un std::string o memoria dinamica.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #6 (permalink)  
Antiguo 05/08/2009, 09:11
 
Fecha de Ingreso: julio-2008
Mensajes: 140
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: No devuelve lo correcto

a que te referis con memoria dinamica?
  #7 (permalink)  
Antiguo 05/08/2009, 10:00
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: No devuelve lo correcto

Memoria que reservas y liberas en tiempo de ejecucion, en C es malloc y free y en C++ new y delete, es algo muy basico tambien.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:23.