elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda: pasando un objeto ofstream como parametro
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda: pasando un objeto ofstream como parametro  (Leído 3,049 veces)
erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Ayuda: pasando un objeto ofstream como parametro
« en: 21 Septiembre 2014, 04:33 am »

Hola, tengo un error pero no entiendo que sucede, me arroja esta notificacion: "error: use of deleted function 'std::basic_ofstream<char>::basic_ofstream( const std::basic_ofstream<char>& )', el codigo tiene un patron parecido a este:

Código
  1.  
  2. #include <fstream>
  3.  
  4. class miClase
  5. {
  6.     public:
  7.          miClase( std::ofstream& );
  8.     private:
  9.          std::ofstream stream;
  10. };
  11.  
  12. miClase::miClase( std::ofstream& tStream )
  13.      : stream( tStream )
  14. {
  15.  
  16. }
  17.  
  18. int main()
  19. {
  20.     std::ofstream mainStream( "texto.txt", std::ios::out );
  21.     miClase pruebaClase( mainStream );
  22. }
  23.  

De antemano, gracias



« Última modificación: 21 Septiembre 2014, 04:51 am por erest0r » En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
BlackM4ster


Desconectado Desconectado

Mensajes: 499


Error, el teclado no funciona. Pulse F1 para continuar


Ver Perfil WWW
Re: Ayuda: pasando un objeto ofstream como parametro
« Respuesta #1 en: 22 Septiembre 2014, 08:14 am »

Creo que el problema es que ofstream no permite el constructor de copia. Tendrías que hacerlo por punteros o pasando el parametro del nombre de archivo:

Por punteros:
Código
  1. #include <fstream>
  2.  
  3. class miClase{
  4.    public:
  5.  
  6.        miClase(std::ofstream& tStream){ stream = &tStream; };
  7.        void Escribe(){ *stream << "Hola. Esto es una prueba\n";
  8.                        stream->close(); }
  9.  
  10.    private:
  11.        std::ofstream *stream;
  12. };
  13.  
  14. int main(){
  15.  
  16.    std::ofstream mainStream("texto.txt", std::ios::out);
  17.  
  18.    miClase pruebaClase(mainStream);
  19.    pruebaClase.Escribe();
  20. }

Alternativa:
Código
  1. #include <fstream>
  2. #include <iostream>
  3.  
  4. class miClase{
  5.    public:
  6.  
  7.        miClase(std::string filename){ stream.open(filename, std::ios::out); }
  8.        void Escribe(){ stream << "Hola. Esto es la prueba 2\n";
  9.                        stream.close(); }
  10.  
  11.    private:
  12.        std::ofstream stream;
  13. };
  14.  
  15. int main(){
  16.  
  17.    miClase pruebaClase("texto.txt");
  18.    pruebaClase.Escribe();
  19. }


« Última modificación: 22 Septiembre 2014, 08:50 am por BlackM4ster » En línea

- Pásate por mi web -
https://codeisc.com
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Ayuda: pasando un objeto ofstream como parametro
« Respuesta #2 en: 22 Septiembre 2014, 08:33 am »

ofstream no dispone de constructor copia. Carece de dicho constructor porque ofstream es un buffer de escritura y, al hacer uso del constructor copia, podrías tener dos ofstream distintos apuntando al mismo fichero. Si eso llega a suceder se podrían provocar inconsistencias en el fichero.

Dicho esto tienes dos opciones, o la solución propuesta por BlackM4ster o usar un puntero para referenciar la instancia de ofstream.
En línea

erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Ayuda: pasando un objeto ofstream como parametro
« Respuesta #3 en: 22 Septiembre 2014, 22:17 pm »

Listo, lo hare entonces por puntero, gracias
En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
BlackM4ster


Desconectado Desconectado

Mensajes: 499


Error, el teclado no funciona. Pulse F1 para continuar


Ver Perfil WWW
Re: Ayuda: pasando un objeto ofstream como parametro
« Respuesta #4 en: 23 Septiembre 2014, 13:03 pm »

Me alegro de que te haya servido xD
En línea

- Pásate por mi web -
https://codeisc.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda Metodo con Objeto como parametro....
Java
PAD_boy 2 3,346 Último mensaje 8 Octubre 2008, 00:56 am
por Ragnarok
Referencia a objeto no establecida como instancia de un objeto. Ayuda.
.NET (C#, VB.NET, ASP)
70N1 6 12,700 Último mensaje 6 Agosto 2010, 22:48 pm
por raul338
Problema: Objeto como parámetro.
Java
ignorantev1.1 2 1,691 Último mensaje 4 Agosto 2014, 19:22 pm
por Nasty35
Ayuda: pasar array como parámetro (del objeto)
Java
JonaLamper 3 2,793 Último mensaje 30 Octubre 2014, 13:27 pm
por ivancea96
conflictin types for ... (pasando mode_t como parámetro)
Programación C/C++
juligarc10 1 2,049 Último mensaje 24 Octubre 2019, 17:43 pm
por CalgaryCorpus
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines