Zapis danych z wektora do pliku
Ostatnio zmodyfikowano 2017-02-01 21:00
koniol Temat założony przez niniejszego użytkownika |
Zapis danych z wektora do pliku » 2017-02-01 19:16:25 Próbuje zapisać dane do pliku. Jak się poprawnie odwołać. Teraz mam adres w *iter bool FileManager::saveObjectFile( vector < Items *> dataFile ) { vector < Items *>::iterator iter; zp.open( filename, ios_base::out | ios_base::app ); if( zp.good() ) { cout << "ZAPIS"; for( iter = dataFile.begin(); iter != dataFile.end(); ++iter ) { zp << * iter; } return true; } return false; }
Jezeli użyje operatora dereferencjito dostaje taki błąd error: no match for ‘operator<<’ (operand types are ‘std::ofstream {aka std::basic_ofstream<char>}’ and ‘Items’) zp << **iter;
|
|
michal11 |
» 2017-02-01 19:53:28 Daj jeszcze jedną gwiazdkę, wtedy będziesz miał dereferencję wskaźnika na Items. Albo możesz też napisać tak for( Items * item: dataFile ) { zp << * item; }
swoją drogą, jest jakiś powód dla którego przesyłasz vector przez wartość a nie referencję? |
|
michal11 |
» 2017-02-01 21:00:31 Odwołam się do twojego edita w oddzielnym poście. Założyłem, ze tak podstawowa sprawa jak przeładowany operator<< dla twojej klasy jest napisany i nie musze o tym wspominać, żeby zapisywać swoje typy do pliku musisz określić jak to zrobić, określasz to przeładowując operator<< w taki sposób std::ostream operator <<( std::ostream & out, const T & obj ); gdzie T to twój typ, taka funkcja jeżeli ma mieć dostęp do danych prywatnych klasy musi być friendem, można to "obejść" zmieniając trochę design, przykład: Class MyClass { public: void Print( std::ostream & out ) const; private: };
std::ostream operator <<( std::ostream & out, const MyClass & obj ) { obj.Print( out ); return out; }
oczywiście implementacja zarówno funkcji Print jak i samego operatora<< zależy już od ciebie i od tego jak i co chcesz zapisywać. |
|
« 1 » |