Mógłby mi ktoś doradzić, jak umożliwić zapis wektora przechowującego obiekty stworzonych przeze mnie klas do pliku, a także późniejsze wczytanie danych do programu? Czy koniecznym byłoby własnoręczne napisanie odpowiedniego kodu?
Próbowałem z Boost::serialization. Męczyłem się z tym w ostatnich dniach przez kilka godzin w sumie. Projekt tworzę w CLionie. Niestety podczas buildu w momencie tworzenia pliku .exe pojawiają się undefined referencje do wielu, wielu metod. Opis błędów jest bardzo długi, jednak wszystko jest okej aż do generowania pliku wykonywalnego. Zgodnie z tutorialem dostosowałem klasy do serializacji, również te pochodne. Generalnie jeśli zakomentuję kod wewnątrz tych 2 metod, to nie ma problemu i program działa poprawnie:
void zapiszStan()
{
std::ofstream ofs("/zapis/zapisanyStan.ser");
boost::archive::text_oarchive oa(ofs);
oa & this->zbior;
}
void wczytajStan()
{
std::ifstream ifs("/zapis/zapisanyStan.ser");
boost::archive::text_iarchive ia(ifs);
ia & this->zbior;
}
Wygląda też na to, że nawet jak pozostawię ten kod, ale nie odwołuję się do tych metod, to program działa.
Nie wiem już, co robić. Być może szybciej poszłoby napisanie własnego kodu. Może brakuje czegoś kompilatorowi, jakiejś biblioteki? Słabo jednak idzie mi posługiwanie się cmake'iem. Dodam jeszcze, że oczywiście robię include potrzebnych plików do wywołania tych metod w kodzie.
Tutaj wrzucam tekst błędów: https://pastebin.com/eSUpZZ9s