<vector> resize() führt nur noch zu fehlern



  • gibts auch ne fehlermeldung für uns? 🙂

    //edit rüdiger war schneller. böser rüdiger 😉



  • rüdiger schrieb:

    < a target='_blank'href='http://@notallowed@.com/ysokg'>Wie man Fragen richtig stellt</a >

    😮



  • Wenn ich wüsste wo der Fehler sein könnte wäre ich ja schon ein Stückchen weiter. Eine Fehlermeldung wäre folgende:

    524 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algobase.h instantiated from `void std::fill(_ForwardIterator, _ForwardIterator, const _Tp&) [with _ForwardIterator = __gnu_cxx::__normal_iterator<TextObjekt*, std::vector<TextObjekt, std::allocator<TextObjekt> > >, _Tp = TextObjekt]'

    also in folgender Funktion macht der Compiler Zicken: Wenn ich Gtext.resize(i+1); und
    Gtext.at(i).set_in_datei(datei_abschnitt_buffer.c_str());
    auskommentiere läuft das Prog.

    set_in_datei(new_name_filelist);

    for(int i=0; i < text.size(); i++){
    cout << "size i: " << i << endl;
    datei_abschnitt.open(text[i].c_str());
    cout << "*set_in_gegliedertertext* Txt Dateien: " << text[i] << endl;
    if(!datei_abschnitt){
    cout << "*set_in_gegliedertertext* Konnte Datei " << text[i] << " nicht oeffnen!" << endl;
    }
    else {
    cout << "*set_in_gegliedertertext* Konte Datei " << text[i] << " oeffnen!" << endl;

    while(getline(datei_abschnitt, datei_abschnitt_buffer)){ // Inhalt einlesen
    cout << "*set_in_gegliedertertext* BufferZeile: " << datei_abschnitt_buffer << endl;
    system("Pause");
    Gtext.resize(i+1);
    Gtext.at(i).set_in_datei(datei_abschnitt_buffer.c_str());

    }
    datei_abschnitt.close();
    }
    }



  • set_in_datei(new_name_filelist);
    
        for(int i=0; i < text.size(); i++){
                cout << "size i: " << i << endl;
                datei_abschnitt.open(text[i].c_str());
                cout << "*set_in_gegliedertertext* Txt Dateien: " << text[i] << endl; 
                if(!datei_abschnitt){ 
                  cout << "*set_in_gegliedertertext* Konnte Datei " << text[i] << " nicht oeffnen!" << endl; 
            }
            else {
                 cout << "*set_in_gegliedertertext* Konte Datei " << text[i] << " oeffnen!" << endl;
    
                 while(getline(datei_abschnitt, datei_abschnitt_buffer)){ // Inhalt einlesen
                     cout << "*set_in_gegliedertertext* BufferZeile: " << datei_abschnitt_buffer << endl;
                     system("Pause");
                     Gtext.resize(i+1);
                     Gtext.at(i).set_in_datei(datei_abschnitt_buffer.c_str());         
                 }
                 datei_abschnitt.close();
            }
        }
    


  • Danke autotagger 🙂

    Sorry bin blutiger Anfänger in C++ sowie in Foren schreiben.

    Ich habe einen Breakepoint gesetzt und und die Fehlermeldungen kommen schon resize(), also ist der Fehler wohl doch nicht in dieser Funktion? Komisch ist nur dass wenn ich die beiden Zeilen unterm Breakpoint entferne, das Prog läuft. Bin echt am verzweifeln...



  • ika schrieb:

    Ich habe einen Breakepoint gesetzt und und die Fehlermeldungen kommen schon resize(), also ist der Fehler wohl doch nicht in dieser Funktion?

    Breakpoints werden beim Debuggen benutzt. Solange dein Programm sich nicht mal compilieren lässt, bringen die gar nichts. Poste doch bitte mal die vollständige Fehlermeldung. Das da oben ist offensichtlich nur ein Teil einer längeren Fehlermeldung.



  • Der Dev C++ geht aber nur bis zum System("Pause"), hat zumindest bislang geklappt.
    Ok, dann hier mal alle Fehlermeldungen die mir der Dev C++ anzeigt:

    C:\Dev-Cpp\include\c++\3.4.2\bits\ios_base.h In member function `std::basic_ios<char, std::char_traits<char> >& std::basic_ios<char, std::char_traits<char> >::operator=(const std::basic_ios<char, std::char_traits<char> >&)':

    524 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algobase.h instantiated from `void std::fill(_ForwardIterator, _ForwardIterator, const _Tp&) [with _ForwardIterator = __gnu_cxx::__normal_iterator<TextObjekt*, std::vector<TextObjekt, std::allocator<TextObjekt> > >, _Tp = TextObjekt]'

    291 C:\Dev-Cpp\include\c++\3.4.2\bits\vector.tcc instantiated from `void std::vector<_Tp, _Alloc>::_M_fill_insert(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, size_t, const _Tp&) [with _Tp = TextObjekt, _Alloc = std::allocator<TextObjekt>]'

    612 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_vector.h instantiated from `void std::vector<_Tp, _Alloc>::insert(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, size_t, const _Tp&) [with _Tp = TextObjekt, _Alloc = std::allocator<TextObjekt>]'

    398 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_vector.h instantiated from `void std::vector<_Tp, _Alloc>::resize(size_t, const _Tp&) [with _Tp = TextObjekt, _Alloc = std::allocator<TextObjekt>]'

    412 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_vector.h instantiated from `void std::vector<_Tp, _Alloc>::resize(size_t) [with _Tp = TextObjekt, _Alloc = std::allocator<TextObjekt>]'

    123 C:\Dev-Cpp\bin\8\c\gegliedertertext.h instantiated from here

    741 C:\Dev-Cpp\include\c++\3.4.2\bits\ios_base.h `std::ios_base& std::ios_base::operator=(const std::ios_base&)' is private

    524 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algobase.h within this context
    C:\Dev-Cpp\include\c++\3.4.2\streambuf In member function `std::basic_filebuf<char, std::char_traits<char> >& std::basic_filebuf<char, std::char_traits<char> >::operator=(const std::basic_filebuf<char, std::char_traits<char> >&)':

    776 C:\Dev-Cpp\include\c++\3.4.2\streambuf `std::basic_streambuf<_CharT, _Traits>& std::basic_streambuf<_CharT, _Traits>::operator=(const std::basic_streambuf<_CharT, _Traits>&) [with _CharT = char, _Traits = std::char_traits<char>]' is private

    524 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algobase.h within this context



  • Dein Gtext ist offenbar ein vector von fstream-Objekten, oder von Objekten, die solche enthalten. Das geht nicht, weil streams nicht kopiert oder zugewiesen werden können. Die fragliche Deklaration ist anscheinend in gegliedertertext.h.



  • vector<TextObjekt> Gtext;
    TextObejkt ist eine Klasse in textobjekt.h

    Bei meinen Kommilitonen gehts ja auch und die haben einen ähnlichen Code.



  • Wenn es tatsächlich daran liegt, dass in der Klasse fstream-Objekten sind( ifstream fin; fstream fout; sind beides Attribute der Klasse TextObjekt), wie kann man das dann umgehen? Gibt es eine Alternative zu resize(); die nicht zu Fehlern führt? Eigenartig ist nur dass es bei den anderen auch geht.



  • Problem gelöst!!
    Es lag am Defaultkonstruktor. Ich hatte vergessen den Textbuffer zu leeren.
    Danke an alle die sich meinem Problem angenommen haben 🙂

    Gruß Ika


Anmelden zum Antworten