Unlimited Temat założony przez niniejszego użytkownika |
[C++] Błędy kompilacji - std::vector, a fstream jako pole w klasie » 2013-03-23 18:56:37 Już wyrywam sobie włosy z nerwów. Co może być tutaj źle? Kompilator wywala jakieś błędy w całkiem innych plikach niż ten co kompiluje :/
Ogólnie wskazuje na linijkę
czlowiek.push_back( uczniowie( Ximie, Xnazwisko, Xmiejscowosc, Xkod, Xulica, Xwiek, Xnumer ) );
Program:
#include <iostream> #include <string> #include <fstream> #include <cstdlib> #include <vector> using namespace std;
class uczniowie { private: string imie, nazwisko, miejscowosc, kod, ulica, Ximie, Xnazwisko, Xmiejscowosc, Xkod, Xulica, odnosnik, napis, bufor, fraza; int wiek, numer, Xwiek, Xnumer, x, lp, lp_cache; size_t ZnalezionaFraza; uczniowie( string Ximie, string Xnazwisko, string Xmiejscowosc, string Xkod, string Xulica, int Xwiek, int Xnumer ); vector < uczniowie > czlowiek; fstream plik; public: bool sprawdz; int wybor; uczniowie(); void clear(); void naglowek(); void dodaj(); void edytuj(); void usun(); void wyswietl_all(); void wyswietl_some(); void sciezka(); void licz_lp(); void usun_plik(); void info(); };
uczniowie::uczniowie( string Ximie, string Xnazwisko, string Xmiejscowosc, string Xkod, string Xulica, int Xwiek, int Xnumer ) : imie( Ximie ) , nazwisko( Xnazwisko ) , miejscowosc( Xmiejscowosc ) , kod( Xkod ) , ulica( Xulica ) , wiek( Xwiek ) , numer( Xnumer ) { }
uczniowie::uczniowie() { lp = 1; lp_cache = 0; }
void uczniowie::clear() { cin.clear(); cin.sync(); }
void uczniowie::naglowek() { cout << "\t\t Witaj w programie! Created by Michal Witkowski!" << endl; cout << "\t\t [ Projekt: zadanie domowe z PSiO ]" << endl << endl; }
void uczniowie::dodaj() { plik.open( odnosnik.c_str(), ios::binary | ios::app | ios::out ); sprawdz = plik.good(); plik.close(); if( sprawdz == true ) { clear(); cout << "Podaj imie: "; cin >> Ximie; cout << "Podaj nazwisko: "; cin >> Xnazwisko; cout << "Podaj miejscowosc: "; cin >> Xmiejscowosc; cout << "Podaj kod pocztowy: "; cin >> Xkod; cout << "Podaj ulice: "; cin >> Xulica; cout << "Podaj wiek: "; cin >> Xwiek; cout << "Podaj numer domu: "; cin >> Xnumer; czlowiek.push_back( uczniowie( Ximie, Xnazwisko, Xmiejscowosc, Xkod, Xulica, Xwiek, Xnumer ) ); plik.open( odnosnik.c_str(), ios::binary | ios::app | ios::out ); plik << lp << ". Imie: " << czlowiek[ lp - 1 ].imie << endl; plik << " Nazwisko: " << czlowiek[ lp - 1 ].nazwisko << endl; plik << " Miejscowosc: " << czlowiek[ lp - 1 ].miejscowosc << endl; plik << " Kod pocztowy: " << czlowiek[ lp - 1 ].kod << endl; plik << " Ulica: " << czlowiek[ lp - 1 ].ulica << endl; plik << " Wiek: " << czlowiek[ lp - 1 ].wiek << endl; plik << " Numer domu: " << czlowiek[ lp - 1 ].numer << endl << endl; plik.close(); lp++; } else { cout << "Error! Nie udalo sie otworzyc pliku!" << endl << endl; cout << "Mozliwe bledy:" << endl; cout << " - odnosnik do pliku nie zostal podany" << endl; cout << " - odnosnik do pliku jest nieprawidlowy" << endl; cout << " - brak odpowiednich uprawnien w systemie" << endl << endl; } system( "pause" ); }
void uczniowie::edytuj() { }
void uczniowie::usun() { }
void uczniowie::wyswietl_all() { plik.open( odnosnik.c_str(), ios::binary | ios::in ); sprawdz = plik.good(); plik.close(); if( sprawdz == true ) { plik.open( odnosnik.c_str(), ios::binary | ios::in ); while( !plik.eof() ) { getline( plik, napis ); cout << napis << endl; } plik.close(); } else { cout << "Error! Nie udalo sie otworzyc pliku!" << endl << endl; cout << "Mozliwe bledy:" << endl; cout << " - odnosnik do pliku nie zostal podany" << endl; cout << " - odnosnik do pliku jest nieprawidlowy" << endl; cout << " - brak odpowiednich uprawnien w systemie" << endl << endl; } system( "pause" ); }
void uczniowie::wyswietl_some() { }
void uczniowie::sciezka() { cout << "Uwaga!!! Pamietaj aby podac prawidlowa sciezke do pliku!" << endl; cout << "Podajac sama nazwe pliku np - dane.bin - plik binarny" << endl; cout << "zostanie utworzony w katalogu z uruchomionym programem." << endl << endl; cout << "Podaj sciezke pliku z rozszerzeniem .bin: "; clear(); getline( cin, odnosnik ); }
void uczniowie::licz_lp() { plik.open( odnosnik.c_str(), ios::binary | ios::app | ios::out ); sprawdz = plik.good(); plik.close(); if( sprawdz == true ) { plik.open( odnosnik.c_str(), ios::binary | ios::app | ios::out ); while( !plik.eof() ) { clear(); getline( plik, bufor ); lp_cache = lp_cache + 1; cout << lp_cache; } plik.close(); cout << lp_cache; lp = lp_cache / 8; } system( "pause" ); }
void uczniowie::usun_plik() { remove( odnosnik.c_str() ); lp = 1; }
void uczniowie::info() { cout << "Wykonanie: " << endl; cout << "Klasa: III bT (2012/2013)" << endl; cout << "Srodowisko: Code::Bloks 10.05" << endl; cout << "Kompilator: GNU GCC" << endl; cout << "E-mail: " << endl << endl; cout << "Dodatkowe:" << endl; cout << " + Program zabezpieczony jest przed 'niesfornym' uzytkownikiem" << endl; cout << " i nie da sie go 'zcrashowac' np podajac litere badz wyraz" << endl; cout << " do zmiennej 'int' (wiek, numer domu)." << endl; cout << " - Nie gwarantuje poprawnosci kodu zrodlowego programu z innymi" << endl; cout << " kompilatorami niz w/w." << endl << endl; system( "pause" ); }
int main() { uczniowie uczen; do { do { system( "cls" ); uczen.naglowek(); cout << "[1] Dodaj nowego ucznia" << endl; cout << "[2] Edytuj ucznia" << endl; cout << "[3] Usun ucznia" << endl; cout << "[4] Wyswietl wszystkich uczniow" << endl; cout << "[5] Wyswietl uczniow na podstawie parametru" << endl; cout << "[6] Sciezka do pliku" << endl; cout << "[7] Usun plik z danymi" << endl; cout << "[8] Wykonanie/Kontakt" << endl; cout << "[0] Zakoncz" << endl << endl; cout << "Twoj wybor: "; uczen.clear(); cin >> uczen.wybor; uczen.sprawdz = cin.good(); system( "cls" ); } while( uczen.sprawdz != true ); uczen.naglowek(); switch( uczen.wybor ) { case 1: { uczen.dodaj(); break; } case 2: { uczen.edytuj(); break; } case 3: { uczen.usun(); break; } case 4: { uczen.wyswietl_all(); break; } case 5: { uczen.wyswietl_some(); break; } case 6: { uczen.sciezka(); break; } case 7: { uczen.usun_plik(); break; } case 8: { uczen.info(); break; } case 0: { return 0; } } } while( uczen.wybor != 0 ); }
Błędy:
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|47|instantiated from 'void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const _Tp&) [with _Tp = uczniowie]'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\stl_vector.h|737|instantiated from 'void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = uczniowie, _Alloc = std::allocator<uczniowie>]'|
C:\Users\Unlimited\Desktop\zadanie.cpp|92|instantiated from here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\ios_base.h|790|error: 'std::ios_base::ios_base(const std::ios_base&)' is private|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|47|error: within this context|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|87|note: synthesized method 'std::basic_ios<char, std::char_traits<char> >::basic_ios(const std::basic_ios<char, std::char_traits<char> >&)' first required here |
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\streambuf|770|error: 'std::basic_streambuf<_CharT, _Traits>::basic_streambuf(const std::basic_streambuf<_CharT, _Traits>&) [with _CharT = char, _Traits = std::char_traits<char>]' is private|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|78|error: within this context|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|87|instantiated from 'void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const _Tp&) [with _Tp = uczniowie]'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\stl_vector.h|737|instantiated from 'void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = uczniowie, _Alloc = std::allocator<uczniowie>]'|
C:\Users\Unlimited\Desktop\zadanie.cpp|92|instantiated from here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|87|note: synthesized method 'std::basic_filebuf<char, std::char_traits<char> >::basic_filebuf(const std::basic_filebuf<char, std::char_traits<char> >&)' first required here |
C:\Users\Unlimited\Desktop\zadanie.cpp|15|note: synthesized method 'std::basic_fstream<char, std::char_traits<char> >::basic_fstream(const std::basic_fstream<char, std::char_traits<char> >&)' first required here |
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\ext\new_allocator.h||In member function 'void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const _Tp&) [with _Tp = uczniowie]':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\ext\new_allocator.h|105|note: synthesized method 'uczniowie::uczniowie(const uczniowie&)' first required here |
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\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> >&)':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|47|instantiated from 'void std::vector<_Tp, _Alloc>::_M_insert_aux(__gnu_cxx::__normal_iterator<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp = uczniowie, _Alloc = std::allocator<uczniowie>]'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\stl_vector.h|741|instantiated from 'void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = uczniowie, _Alloc = std::allocator<uczniowie>]'|
C:\Users\Unlimited\Desktop\zadanie.cpp|92|instantiated from here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\ios_base.h|793|error: 'std::ios_base& std::ios_base::operator=(const std::ios_base&)' is private|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|47|error: within this context|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd||In member function 'std::basic_istream<char, std::char_traits<char> >& std::basic_istream<char, std::char_traits<char> >::operator=(const std::basic_istream<char, std::char_traits<char> >&)':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|53|note: synthesized method '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> >&)' first required here |
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd||In member function 'std::basic_iostream<char, std::char_traits<char> >& std::basic_iostream<char, std::char_traits<char> >::operator=(const std::basic_iostream<char, std::char_traits<char> >&)':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|59|note: synthesized method 'std::basic_istream<char, std::char_traits<char> >& std::basic_istream<char, std::char_traits<char> >::operator=(const std::basic_istream<char, std::char_traits<char> >&)' first required here |
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd||In member function 'std::basic_fstream<char, std::char_traits<char> >& std::basic_fstream<char, std::char_traits<char> >::operator=(const std::basic_fstream<char, std::char_traits<char> >&)':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|87|note: synthesized method 'std::basic_iostream<char, std::char_traits<char> >& std::basic_iostream<char, std::char_traits<char> >::operator=(const std::basic_iostream<char, std::char_traits<char> >&)' first required here |
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\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> >&)':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\streambuf|778|error: '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|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|78|error: within this context|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd||In member function 'std::basic_fstream<char, std::char_traits<char> >& std::basic_fstream<char, std::char_traits<char> >::operator=(const std::basic_fstream<char, std::char_traits<char> >&)':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|87|instantiated from 'void std::vector<_Tp, _Alloc>::_M_insert_aux(__gnu_cxx::__normal_iterator<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp = uczniowie, _Alloc = std::allocator<uczniowie>]'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\stl_vector.h|741|instantiated from 'void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = uczniowie, _Alloc = std::allocator<uczniowie>]'|
C:\Users\Unlimited\Desktop\zadanie.cpp|92|instantiated from here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|87|note: synthesized method '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> >&)' first required here |
C:\Users\Unlimited\Desktop\zadanie.cpp||In member function 'uczniowie& uczniowie::operator=(const uczniowie&)':|
C:\Users\Unlimited\Desktop\zadanie.cpp|15|note: synthesized method 'std::basic_fstream<char, std::char_traits<char> >& std::basic_fstream<char, std::char_traits<char> >::operator=(const std::basic_fstream<char, std::char_traits<char> >&)' first required here |
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\vector.tcc||In member function 'void std::vector<_Tp, _Alloc>::_M_insert_aux(__gnu_cxx::__normal_iterator<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp = uczniowie, _Alloc = std::allocator<uczniowie>]':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\vector.tcc|312|note: synthesized method 'uczniowie& uczniowie::operator=(const uczniowie&)' first required here |
||=== Build finished: 8 errors, 0 warnings ===|
|