Dateien an Prozedur übergeben
-
Hallo!
Wie kann ich Dateien an eine Prozedur übergeben. Leider funktioniert folgendes nicht:
#include <iostream> #include <fstream> #include <cstring> #include <vector> #include <iterator> using namespace std; bool dateien(fstream Quelldatei, fstream Zieldatei) { return 1; } int main(int argc, char *argv[])Parameter { fstream Quelldatei, Zieldatei; ÖFFNE UND ÜBERPRÜFE QUELL- UND ZIELDATEI dateien(FQuelldatei,FTempdatei); VERARBEITE ZIELDATEI system("PAUSE"); return 0; }
Fehlermeldung:
C:/Programme/Dev-Cpp/include/c++/bits/ios_base.h: In copy constructor
std::basic\_ios<char, std::char\_traits<char> >::basic_ios(const std::basic\_ios<char, std::char\_traits<char> >&)': C:/Programme/Dev-Cpp/include/c++/bits/ios_base.h:421:
std::ios_base::ios_base(const std::ios_base&)' is private
main.cpp:65: within this contextC:/Programme/Dev-Cpp/include/c++/streambuf: In copy constructor
std::basic\_filebuf<char, std::char\_traits<char> >::basic_filebuf(const std::basic\_filebuf<char, std::char\_traits<char> >&)': C:/Programme/Dev-Cpp/include/c++/streambuf:486:
std::basic_streambuf<_CharT,
_Traits>::basic_streambuf(const std::basic_streambuf<_CharT, _Traits>&)
[with _CharT = char, _Traits = std::char_traits<char>]' is private
main.cpp:65: within this contextmake.exe: *** [main.o] Error 1
Ausführung beendet
Viele Grüße
pmw
-
versuch es mal mit:
bool dateien(fstream &Quelldatei, fstream &Zieldatei) { return 1; }
weil, wenn du die fstreams nicht als referenz übergibts, dann werden die kopiert und das ist scheinbar nicht in ordnung (und das ist auch gut so).
-
Versuch mal folgendes:
#include <iostream> #include <fstream> #include <cstring> #include <vector> #include <iterator> using namespace std; bool dateien(fstream &Quelldatei, fstream &Zieldatei) { return 1; } int main(int argc, char *argv[])Parameter { fstream Quelldatei, Zieldatei; ÖFFNE UND ÜBERPRÜFE QUELL- UND ZIELDATEI dateien(FQuelldatei,FTempdatei); VERARBEITE ZIELDATEI system("PAUSE"); return 0; }
Wenn ich das richtig lese, können die Streams nicht kopiert werden, daher
verwende doch einfach Referenzen
-
Danke für die schnelle Hilfe!!!