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 context

    C:/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 context

    make.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!!! 🙂


Anmelden zum Antworten