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:
#include <fstream>
class miClase
{
public:
miClase( std::ofstream& );
private:
std::ofstream stream;
};
miClase::miClase( std::ofstream& tStream )
: stream( tStream )
{
}
int main()
{
std::ofstream mainStream( "texto.txt", std::ios::out );
miClase pruebaClase( mainStream );
}
De antemano, gracias
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:
#include <fstream>
class miClase{
public:
miClase(std::ofstream& tStream){ stream = &tStream; };
void Escribe(){ *stream << "Hola. Esto es una prueba\n";
stream->close(); }
private:
std::ofstream *stream;
};
int main(){
std::ofstream mainStream("texto.txt", std::ios::out);
miClase pruebaClase(mainStream);
pruebaClase.Escribe();
}
Alternativa:
#include <fstream>
#include <iostream>
class miClase{
public:
miClase(std::string filename){ stream.open(filename, std::ios::out); }
void Escribe(){ stream << "Hola. Esto es la prueba 2\n";
stream.close(); }
private:
std::ofstream stream;
};
int main(){
miClase pruebaClase("texto.txt");
pruebaClase.Escribe();
}
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.
Listo, lo hare entonces por puntero, gracias
Me alegro de que te haya servido xD