Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: oPen syLar en 18 Octubre 2011, 15:17 PM

Título: FILE * como dato miembro de una clase (C++)
Publicado por: oPen syLar en 18 Octubre 2011, 15:17 PM
Hola.. Tengo un pequeño problema a la hora de definir un puntero como dato miembro en C++ Para resumir lo que hago es lo siguiente...

class oPen
{
  FILE *canal;

 oPen()
 canal=fopen("unTxt.txt", "w");


static int fnMiembro();
}


int oPen::fnMiembro
{
 oPen c;

 fprintf(c.canal, "hola");
}



Al parecer c.canal apunta a otro sector de la memoria que no es precisamente el reservado por fopen... fopen devuelve un handle valido... El problema esta en que no sabe la dirección correcta.. Y termina la ejecución.

Lo que e hecho hasta ahora es sacar FILE * canal de la clase y declararlo como variable global pero esto me parece que no es lo correcto.. Quiero hacerlo completamente POO.


Saludos


Edito: El código estaba mal escrito... Ahora se parece mas a lo que tengo escrito
Título: Re: FILE * como dato miembro de una clase (C++)
Publicado por: Eternal Idol en 18 Octubre 2011, 17:06 PM
¿Para que usas una instancia temporal? No tiene sentido eso:

oPen::fnMiembro
{
  oPen c;

Código (cpp) [Seleccionar]

void oPen::fnMiembro()
{
  fprintf(canal, "hola");
  fprintf(this->canal, " chau");
}
Título: Re: FILE * como dato miembro de una clase (C++)
Publicado por: oPen syLar en 18 Octubre 2011, 17:48 PM
Tenia un error en el código que escribí arriba.. Ya lo e editado..

Se trata de un puntero tipo FILE en la clase para escribir el debug del programa.

Se me olvido comentarles que si accedo de la siguiente forma al puntero

c->canal

Me tira un error en el programa.. (En tiempo de ejecución)