/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Duda:(

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Lore



Registrado: 08 Ago 2004
Mensajes: 6

MensajePublicado: 01/09/2004 10:37 am
Título: Duda:(

Hola, estoy haciendo un programa en C++, en el que tengo
dos arrays de char, por lo tanto los tengo definidos asi:
char *nombre, char *apellidos.
En el constructor de esa clase yo paso dos arrays de tipo
char, que a su vez son const. Construyo los arrays de
char con el tamaño de los arrays correspondiente que se
pasan como parámetro, y se las asigno a esos atributos
globales que tengo(nombre, y apellidos).
El problema que es que al hacer el destructor hago:
Persona::~Persona(){
delete []nombre;
delete []apellidos;
}
Y me da error de ejecucion en el delete []nombre. No lo
entiendo. Me podeis ayudar?
Muchas gracias
Volver arriba
chuidiang



Registrado: 29 Ago 2004
Mensajes: 94

MensajePublicado: 02/09/2004 8:05 pm
Título:

¿Como haces la asignación?


Se bueno.
Volver arriba
kronos



Registrado: 16 Sep 2004
Mensajes: 10

MensajePublicado: 18/09/2004 5:04 pm
Título:

tirame un poco mas de codigo, sobre todo en la funcion que asignas la memoria para esas cadenas
Volver arriba
K-ySeR



Registrado: 08 May 2004
Mensajes: 7

MensajePublicado: 23/09/2004 8:50 pm
Título:

int i,j;
char nombre[1];
char apellido[1];
printf ("ingrese nombre");
for i=1;i<=1;i++)
{
scanf("%s",&nombre[i]);
}
printf ("ingrese apellido");
for (j=1;j<=1;j++)
{
scanf("%s",apellido[j]);
}

sera asi o no ??
Volver arriba
kronos



Registrado: 16 Sep 2004
Mensajes: 10

MensajePublicado: 23/09/2004 9:32 pm
Título:

Espero que tu pregunta sea respondida con esto....de esta forma yo resuelvo lo que tu me dices en C.

Código:

char *nombre;
char *apellido;

  printf("Ingrese Nombre: ");
  gets(nombre);

  printf("Ingresa Apellido: ");
  gets(apellido);

  printf("Hola %s, %s",apellido, nombre);

  getch();



el problema con el destructor se debe a que nunca tu has asignado memoria a nombre, por eso es que no hay nada para liberar, y por ello el error.

Suerte!.
Volver arriba
chuidiang



Registrado: 29 Ago 2004
Mensajes: 94

MensajePublicado: 24/09/2004 8:17 pm
Título:

Hay varios temas:

char nombre[1]

reserva espacio para un nombre de una sola letra. No creo que valga para lo que pretendes. Deberías poner

char mombre [100]

o un tamaño adecuado, así el nombre puede tener hasta 100 caracteres (en realidad 99 porque al final del nombre C/C++ mete un caracter cero para indicar el final de cadena.

En cuanto a los arrays, en C/C++ el primer indice de array es el 0. con esa declaración, puedes hacer nombre[0], nombre[1]... nombre[99]. Por ello, tu bucle está un poco mal. En vez de for (i=1; i<=1; ...) debes poner for (i=0; i<1; ...)

Y finalmente, en cuanto al scanf(), nombre ya es un puntero, no necesitas ponerle el & (todos los arrays se tratan como punteros)

scanf ("%s", nombre);

Si además, como parece que quieres hacer, es declarar un array de nombres (no solo uno de 100 caractares), debes usar un array doble

char nombre [10][100]

Esto te da 10 nombres de 100 caracteres cada uno.

Código:

char nombre[10][100];
int i;
for (i=0; <10; i++)
    scanf ("%s", nombre[i]);


Y otro detalle más. Si declaras

char nombre[1];

no debes hacer delete. Supongo que ese es el error que te sale. Sólo se hace delete cuando se hace new previamente. Por ejemplo, en el código de Kronos, creo que debería reservarse primero el espacio de memoria para almacenar el nombre y al final, cuando no se use, liberarlo.

Cita:

char *nombre;
nombre = new char[100];
gets (nombre);
....
delete [] nombre;


Se bueno
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com