Código:
void cPersona::setNombre(char n)
{
nom[20] = n;
}
Con el codigo anterior lo que haces es que nom[20] sea el caracter n (los elementos de nom de 0 a 19 no son modificados en lo absoluto). Y es un error grave ya que si nom es un array de 20 elementos solo son validos 20 elementos, osea de 0 a 19, 20 es el elemento 21 y esta fuera de los limites del array.
Código:
char cPersona::getNombre(void)
{
return nom[20];
}
Con lo anterior retornas un caracter del array nom (tambien fuera de los limites).
Tendrias que hacer algo como esto:
Código:
void setNombre(char *elNombre)
{
strncpy (nombre, elNombre, sizeof(nombre) - 1);
}
Código:
char *getNombre()
{
return nombre;
}