Błąd przy wczytywaniu z pliku

0

Witam, mam program który tworzy obiekty, jako jedną z funkcji ma wczytywanie danych na temat obiektów z pliku. Funkcja ta jednak nie działa, czy ktoś ma może pomysł dlaczego?

 #include <iostream>
#include <cstring>
#include <cctype>
#include <iomanip>
#include <vector>
#include <fstream>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <algorithm>

using namespace std;

string linia;
string zmiana;

class Zwierze
{
    int wielkosc;
protected:
    int max_dl_zycia;
public:
    char nazwa[20];
    Zwierze() {};
    ~Zwierze() {};
    Zwierze(int wiel, int max_zycie): wielkosc(wiel), max_dl_zycia(max_zycie)
    {
        cout<<wielkosc<<endl;
        cout<<max_dl_zycia<<endl;
    }

    virtual void Wyswietl()
    {
        cout<<"Nazwa obiektu: "<<nazwa<<endl;
        cout<<"Wielkosc:"<<wielkosc<<endl;
        cout<<"Max dlugosc zycia:"<<max_dl_zycia<<endl;
    }

    virtual void Modyfikuj()
    {
        cout<<"Podaj nazwe:"<<endl;
        cin>>nazwa;
        cout<<"Podaj wielkosc:"<<endl;
        cin>>wielkosc;
        cout<<"Podaj max dlugosc zycia:"<<endl;
        cin>>max_dl_zycia;
    }

     virtual void Zapisz()
    {
        ofstream Plik;
        Plik.open("zwierzeta.txt", ios::app);
        Plik<<nazwa<<endl;
        Plik<<wielkosc<<endl;
        Plik<<max_dl_zycia<<endl;
    }

    virtual void Odczytaj()
    {
        ifstream Plik;

        Plik>>nazwa;
        Plik>>wielkosc;
        Plik>>max_dl_zycia;
    }

};

class Ptak : public Zwierze
{

    int waga;
protected:
    int kolor;
public:
    Ptak() {};
    ~Ptak() {};
    Ptak(int wiel1, int max_zycie1, int wag, int kol): Zwierze(wiel1, max_zycie1), waga(wag), kolor(kol)
    {
        cout<<waga<<endl;
        cout<<kolor<<endl;
    }

    void Wyswietl()
    {
        Zwierze::Wyswietl();
        cout<<"Waga:"<<waga<<endl;
        cout<<"Kolor:"<<kolor<<endl;
    }

    void Modyfikuj()
    {
        Zwierze::Modyfikuj();
        cout<<"Podaj wage:"<<endl;
        cin>>waga;
        cout<<"Podaj kolor:"<<endl;
        cin>>kolor;
    }

    void Zapisz()
    {
        Zwierze::Zapisz();
        ofstream Plik;
        Plik.open("zwierzeta.txt", ios::app);
        Plik<<waga<<endl;
        Plik<<kolor<<endl;
    }

    void Odczytaj()
    {
        Zwierze::Odczytaj();
        ifstream Plik;

        Plik>>waga;
        Plik>>kolor;
    }
};

class Latajace : public Ptak
{
    int rozp_skrzydel;
protected:
    int dl_ogona;
public:
    Latajace() {};
    ~Latajace() {};
    Latajace(int wiel2, int max_zycie2, int wag1, int kol1, int skrzydla, int dl_og, string naz1):
    Ptak(wiel2, max_zycie2, wag1, kol1), rozp_skrzydel(skrzydla), dl_ogona(dl_og)
    {
        cout<<rozp_skrzydel<<endl;
        cout<<dl_ogona<<endl;
    }

    void Wyswietl()
    {
        Ptak::Wyswietl();
        cout<<"Rozpietosc skrzydel:"<<rozp_skrzydel<<endl;
        cout<<"Dlugosc ogona:"<<dl_ogona<<endl;
    }

    void Modyfikuj()
    {
        Ptak::Modyfikuj();
        cout<<"Podaj rozpietosc skrzydel:"<<endl;
        cin>>rozp_skrzydel;
        cout<<"Podaj dlugosc ogona:"<<endl;
        cin>>dl_ogona;
    }

    void Zapisz()
    {
        Ptak::Zapisz();
        ofstream Plik;
        Plik.open("zwierzeta.txt", ios::app);
        Plik<<rozp_skrzydel<<endl;
        Plik<<dl_ogona<<endl;
    }

    void Odczytaj()
    {
        Ptak::Odczytaj();
        ifstream Plik;

        Plik>>rozp_skrzydel;
        Plik>>dl_ogona;

    }

};

class Nieloty : public Ptak
{
    int dl_dzioba;
protected:
    int miejsce_zycia;
public:
    ~Nieloty() {};
    Nieloty() {};
    Nieloty(int wiel3, int max_zycie3, int wag2, int kol2, int dziob, int miejsce, string naz2):
    Ptak(wiel3, max_zycie3, wag2, kol2), dl_dzioba(dziob), miejsce_zycia(miejsce)
    {
        cout<<dl_dzioba<<endl;
        cout<<miejsce_zycia<<endl;
    }

    void Wyswietl()
    {
        Ptak::Wyswietl();
        cout<<"Dlugosc dzioba:"<<dl_dzioba<<endl;
        cout<<"Miejsce zycia:"<<miejsce_zycia<<endl;
    }

    void Modyfikuj()
    {
        Ptak::Modyfikuj();
        cout<<"Podaj dlugosc dzioba:"<<endl;
        cin>>dl_dzioba;
        cout<<"Podaj miejsce zycia:"<<endl;
        cin>>miejsce_zycia;
    }

    void Zapisz()
    {
        Ptak::Zapisz();
        ofstream Plik;
        Plik.open("zwierzeta.txt", ios::app);
        Plik<<dl_dzioba<<endl;
        Plik<<miejsce_zycia<<endl;
        Plik.close();
    }

    void Odczytaj()
    {
        Ptak::Odczytaj();
        ifstream Plik;

        Plik>>dl_dzioba;
        Plik>>miejsce_zycia;
    }


};

class Ssaki : public Zwierze
{
    int waga;
protected:
    int kolor;
public:
    Ssaki() {};
    ~Ssaki() {};
    Ssaki(int wiel4, int max_zycie4, int weight, int colour):
    Zwierze(wiel4, max_zycie4), waga(weight), kolor(colour)
    {
        cout<<waga<<endl;
        cout<<kolor<<endl;
    }

    void Wyswietl()
    {
        Zwierze::Wyswietl();
        cout<<"Waga:"<<waga<<endl;
        cout<<"Kolor:"<<kolor<<endl;
    }

    void Modyfikuj()
    {
        Zwierze::Modyfikuj();
        cout<<"Podaj wage:"<<endl;
        cin>>waga;
        cout<<"Podaj kolor:"<<endl;
        cin>>kolor;

    }

    void Zapisz()
    {
        Zwierze::Zapisz();
        ofstream Plik;
        Plik.open("zwierzeta.txt", ios::app);
        Plik<<waga<<endl;
        Plik<<kolor<<endl;
    }

    void Odczytaj()
    {
        Zwierze::Odczytaj();
        ifstream Plik;

        Plik>>waga;
        Plik>>kolor;
    }

};

class Torbacze : public Ssaki
{
    int dl_ciazy;
protected:
    int ogon;
public:
    Torbacze() {};
    ~Torbacze() {};
    Torbacze(int wiel5, int max_zycie5, int weight1, int colour1, int ciaza, int tail, string naz3):
    Ssaki(wiel5, max_zycie5, weight1, colour1), dl_ciazy(ciaza), ogon(tail)
    {
        cout<<dl_ciazy<<endl;
        cout<<ogon<<endl;
    }

    void Wyswietl()
    {
        Ssaki::Wyswietl();
        cout<<"Dlugosc ciazy:"<<dl_ciazy<<endl;
        cout<<"Dlugosc ogona:"<<ogon<<endl;
    }

    void Modyfikuj()
    {
        Ssaki::Modyfikuj();
        cout<<"Podaj dlugosc ciazy:"<<endl;
        cin>>dl_ciazy;
        cout<<"Czy jest obecny ogon:"<<endl;
        cin>>ogon;
    }

    void Zapisz()
    {
        Ssaki::Zapisz();
        ofstream Plik;
        Plik.open("zwierzeta.txt", ios::app);
        Plik<<dl_ciazy<<endl;
        Plik<<ogon<<endl;
        Plik.close();
    }

    void Odczytaj()
    {
        Ssaki::Odczytaj();
        ifstream Plik;

        Plik>>dl_ciazy;
        Plik>>ogon;

    }

};

class Lozyskowce : public Ssaki
{
    int liczba_potomstwa;
protected:
    int srodowisko;
public:
    Lozyskowce() {};
    ~Lozyskowce() {};
    Lozyskowce(int wiel6, int max_zycie6, int weight2, int colour2, int potomstwo, int srod):
    Ssaki(wiel6, max_zycie6, weight2, colour2), liczba_potomstwa(potomstwo), srodowisko(srod)
    {
        cout<<liczba_potomstwa<<endl;
        cout<<srodowisko<<endl;
    }

    void Wyswietl()
    {
        Ssaki::Wyswietl();
        cout<<"Liczba potomstwa:"<<liczba_potomstwa<<endl;
        cout<<"Srodowisko zycia:"<<srodowisko<<endl;
    }

    void Modyfikuj()
    {
        Ssaki::Modyfikuj();
        cout<<"Podaj liczbe potomstwa:"<<endl;
        cin>>liczba_potomstwa;
        cout<<"Podaj srodowisko zycia:"<<endl;
        cin>>srodowisko;
    }

    void Zapisz()
    {
        Ssaki::Zapisz();
        ofstream Plik;
        Plik.open("zwierzeta.txt", ios::app);
        Plik<<liczba_potomstwa<<endl;
        Plik<<srodowisko<<endl;
    }

    void Odczytaj()
    {
        Ssaki::Odczytaj();
        ifstream Plik;

        Plik>>liczba_potomstwa;
        Plik>>srodowisko;
    }

};

class Niekopytne : public Lozyskowce
{
    int liczba_nog;
protected:
    int odzywianie;
public:
    Niekopytne() {};
    ~Niekopytne() {};
    Niekopytne(int wiel7, int max_zycie7,int weight3, int colour3, int potomstwo1, int srod1, int nogi, int odzyw, string naz4):
    Lozyskowce(wiel7, max_zycie7, weight3, colour3, potomstwo1, srod1), liczba_nog(nogi), odzywianie(odzyw)
    {
        cout<<liczba_nog<<endl;
        cout<<odzywianie<<endl;
    }

    void Wyswietl()
    {
        Lozyskowce::Wyswietl();
        cout<<"Liczba nog:"<<liczba_nog<<endl;
        cout<<"Sposob odzywiania:"<<odzywianie<<endl;

    }

    void Modyfikuj()
    {
        Lozyskowce::Modyfikuj();
        cout<<"Podaj liczbe nog:"<<endl;
        cin>>liczba_nog;
        cout<<"Podaj sposob odzywiania:"<<endl;
        cin>>odzywianie;
    }

    void Zapisz()
    {
        Lozyskowce::Zapisz();
        ofstream Plik;
        Plik.open("zwierzeta.txt", ios::app);
        Plik<<liczba_nog<<endl;
        Plik<<odzywianie<<endl;
        Plik.close();
    }

    void Odczytaj()
    {
        Lozyskowce::Odczytaj();
        ifstream Plik;

        Plik>>liczba_nog;
        Plik>>odzywianie;
    }

};

class Kopytne : public Lozyskowce
{
    int dl_uszu;
protected:
    int dl_szyi;
public:
    Kopytne() {};
    ~Kopytne() {};
    Kopytne(int wiel8, int max_zycie8, int weight4, int colour4, int potomstwo2, int srod2, int uszy, int szyja):
    Lozyskowce(wiel8, max_zycie8, weight4, colour4, potomstwo2, srod2), dl_uszu(uszy), dl_szyi(szyja)
    {
        cout<<dl_uszu<<endl;
        cout<<dl_szyi<<endl;
    }

    void Wyswietl()
    {
        Lozyskowce::Wyswietl();
        cout<<"Dlugosc uszu:"<<dl_uszu<<endl;
        cout<<"Dlugosc szyi:"<<dl_szyi<<endl;
    }

    void Modyfikuj()
    {
        Lozyskowce::Modyfikuj();
        cout<<"Podaj dlugosc uszu:"<<endl;
        cin>>dl_uszu;
        cout<<"Podaj dlugosc szyi:"<<endl;
        cin>>dl_szyi;
    }

    void Zapisz()
    {
        Lozyskowce::Zapisz();
        ofstream Plik;
        Plik.open("zwierzeta.txt", ios::app);
        Plik<<dl_uszu<<endl;
        Plik<<dl_szyi<<endl;
    }

    void Odczytaj()
    {
        Lozyskowce::Odczytaj();
        ifstream Plik;

        Plik>>dl_uszu;
        Plik>>dl_szyi;
    }

};

class Parzystokopytne : public Kopytne
{
    int dl_ciala;
protected:
    int dl_nog;
public:
    Parzystokopytne() {};
    ~Parzystokopytne() {};
    Parzystokopytne(int wiel9, int max_zycie9, int weight5, int colour5, int potomstwo3, int srod3, int uszy1, int szyja1, int cialo, int dlugosc_nog, string naz5):
    Kopytne(wiel9, max_zycie9, weight5, colour5, potomstwo3, srod3, uszy1, szyja1), dl_ciala(cialo), dl_nog(dlugosc_nog)
    {
        cout<<dl_ciala<<endl;
        cout<<dl_nog<<endl;
    }

    void Wyswietl()
    {
        Kopytne::Wyswietl();
        cout<<"Dlugosc ciala:"<<dl_ciala<<endl;
        cout<<"Dlugosc nog:"<<dl_nog<<endl;
    }

    void Modyfikuj()
    {
        Kopytne::Modyfikuj();
        cout<<"Podaj dlugosc ciala:"<<endl;
        cin>>dl_ciala;
        cout<<"Podaj dlugosc nog:"<<endl;
        cin>>dl_nog;
    }

    void Zapisz()
    {
        Kopytne::Zapisz();
        ofstream Plik;
        Plik.open("zwierzeta.txt", ios::app);
        Plik<<dl_ciala<<endl;
        Plik<<dl_nog<<endl;
        Plik.close();
    }

    void Odczytaj()
    {
        Kopytne::Odczytaj();
        ifstream Plik;

        Plik>>dl_ciala;
        Plik>>dl_nog;
    }

};

class Nieparzystokopytne : public Kopytne
{
    int liczba_zebow;
protected:
    int liczba_kosci;
public:
    Nieparzystokopytne() {};
    ~Nieparzystokopytne() {};
    Nieparzystokopytne(int wiel10, int max_zycie10, int weight6, int colour6, int potomstwo4, int srod4, int uszy2, int szyja2, int zeby, int kosci, string naz6):
    Kopytne(wiel10, max_zycie10, weight6, colour6, potomstwo4, srod4, uszy2, szyja2), liczba_zebow(zeby), liczba_kosci(kosci)
    {
        cout<<liczba_zebow<<endl;
        cout<<liczba_kosci<<endl;
    }

    void Wyswietl()
    {
        Kopytne::Wyswietl();
        cout<<"Liczba zebow:"<<liczba_zebow<<endl;
        cout<<"Liczba kosci:"<<liczba_kosci<<endl;

    }

    void Modyfikuj()
    {
        Kopytne::Modyfikuj();
        cout<<"Podaj liczbe zebow:"<<endl;
        cin>>liczba_zebow;
        cout<<"Podaj liczbe kosci:"<<endl;
        cin>>liczba_kosci;
    }

    void Zapisz()
    {
        Kopytne::Zapisz();
        ofstream Plik;
        Plik.open("zwierzeta.txt", ios::app);
        Plik<<liczba_zebow<<endl;
        Plik<<liczba_kosci<<endl;
        Plik.close();
    }

    void Odczytaj()
    {
        Kopytne::Odczytaj();
        ifstream Plik;

        Plik>>liczba_zebow;
        Plik>>liczba_kosci;
    }

};

int main()
{
    vector <Nieloty> nieloty;
    vector <Latajace> latajace;
    vector <Niekopytne> niekopytne;
    vector <Torbacze> torbacze;
    vector <Nieparzystokopytne> nieparzystokopytne;
    vector <Parzystokopytne> parzystokopytne;

    string wybor;
    string nazwa_obiektu;
    A: cout<<"\tMENU"<<endl<<endl;
    cout<<"CD"<<endl; //zmiana wezla
    cout<<"MO"<<endl; //dodaj obiekt
    cout<<"DO"<<endl; //usun obiekt
    cout<<"MDO"<<endl; //modyfikuj obiekt
    cout<<"DIR"<<endl; //wyswietl liste
    cout<<"SHOW"<<endl; //wyswietl obiekt
    cout<<"SAVE"<<endl; //zapis do pliku
    cout<<"READ"<<endl; //odczyt z pliku
    cout<<"TREE"<<endl; //wyswietl drzewo
    cout<<"\nWybierz symbol polecenia"<<endl;
    cin>>wybor;

    while(1)
    {
        if(wybor=="CD")
        {
        cout<<"Podaj znak wezla do ktorego chcesz przejsc:\n";
        cout<<"D-nieloty\n";
        cout<<"E-latajace\n";
        cout<<"G-torbacze\n";
        cout<<"H-niekopytne\n";
        cout<<"L-parzystokopytne\n";
        cout<<"M-nieparzystokopytne\n";
        cout<<endl;
        cin>>zmiana;
        cout<<endl;
        goto A;
        }
        else if(wybor=="MO")
        {
        if(zmiana=="D")
        {
            Nieloty ob;
            ob.Modyfikuj();
            nieloty.push_back(ob);
        }
        else if(zmiana=="E")
        {
            Latajace ob;
            ob.Modyfikuj();
            latajace.push_back(ob);
        }
        else if(zmiana=="G")
        {
            Torbacze ob;
            ob.Modyfikuj();
            torbacze.push_back(ob);
        }
        else if(zmiana=="H")
        {
            Niekopytne ob;
            ob.Modyfikuj();
            niekopytne.push_back(ob);
        }
        else if(zmiana=="M")
        {
            Nieparzystokopytne ob;
            ob.Modyfikuj();
            nieparzystokopytne.push_back(ob);
        }
        else if(zmiana=="L")
        {
            Parzystokopytne ob;
            ob.Modyfikuj();
            parzystokopytne.push_back(ob);
        }
        goto A;
        }
    else if(wybor=="DO")
    {
        cout<<"Wprowadz nazwe obiektu ktory chcesz usunac"<<endl;
        cin>>nazwa_obiektu;
        if(zmiana=="D")
        {
            for(int i=0;i<nieloty.size();i++)
            {
                if(nieloty[i].nazwa==nazwa_obiektu)
                {
                    swap(nieloty[i], nieloty[nieloty.size()-1]);
                    nieloty.pop_back();
                    cout<<"Obiekt usuniety"<<endl<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="E")
        {
            for(int i=0;i<latajace.size();i++)
            {
                if(latajace[i].nazwa==nazwa_obiektu)
                {
                    swap(latajace[i], latajace[latajace.size()-1]);
                    latajace.pop_back();
                    cout<<"Obiekt usuniety"<<endl<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="G")
        {
            for(int i=0;i<torbacze.size();i++)
            {
                if(torbacze[i].nazwa==nazwa_obiektu)
                {
                    swap(torbacze[i], torbacze[torbacze.size()-1]);
                    torbacze.pop_back();
                    cout<<"Obiekt usuniety"<<endl<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="H")
        {
            for(int i=0;i<niekopytne.size();i++)
            {
                if(niekopytne[i].nazwa==nazwa_obiektu)
                {
                    swap(niekopytne[i], niekopytne[niekopytne.size()-1]);
                    niekopytne.pop_back();
                    cout<<"Obiekt usuniety"<<endl<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="L")
        {
            for(int i=0;i<parzystokopytne.size();i++)
            {
                if(parzystokopytne[i].nazwa==nazwa_obiektu)
                {
                    swap(parzystokopytne[i], parzystokopytne[parzystokopytne.size()-1]);
                    parzystokopytne.pop_back();
                    cout<<"Obiekt usuniety"<<endl<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="M")
        {
            for(int i=0;i<nieparzystokopytne.size();i++)
            {
                if(nieparzystokopytne[i].nazwa==nazwa_obiektu)
                {
                    swap(nieparzystokopytne[i], nieparzystokopytne[nieparzystokopytne.size()-1]);
                    nieparzystokopytne.pop_back();
                    cout<<"Obiekt usuniety"<<endl<<endl;
                    goto A;
                }
            }
        }

        cout<<"\nPodany obiekt nie istnieje"<<endl;
        goto A;
        }

    else if(wybor=="MDO")
    {
    cout<<"Wprowadz nazwe obiektu do modyfikacji"<<endl;
    cin>>nazwa_obiektu;
    if(zmiana=="D")
        {
            for(int i=0;i<nieloty.size();i++)
            {
                if(nieloty[i].nazwa==nazwa_obiektu)
                {
                    cout<<"Wprowadz nowe wartosci: "<<endl;
                    nieloty[i].Modyfikuj();
                    cout<<endl;
                    goto A;
                }
            }

        }
        else if(zmiana=="E")
        {
            for(int i=0;i<latajace.size();i++)
            {
                if(latajace[i].nazwa==nazwa_obiektu)
                {
                    cout<<"Wprowadz nowe wartosci:"<<endl;
                    latajace[i].Modyfikuj();
                    cout<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="G")
        {
            for(int i=0;i<torbacze.size();i++)
            {
                if(torbacze[i].nazwa==nazwa_obiektu)
                {
                    cout<<"Wprowadz nowe wartosci:"<<endl;
                    torbacze[i].Modyfikuj();
                    cout<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="H")
        {
            for(int i=0;i<niekopytne.size();i++)
            {
                if(niekopytne[i].nazwa==nazwa_obiektu)
                {
                    cout<<"Wprowadz nowe wartosci:"<<endl;
                    niekopytne[i].Modyfikuj();
                    cout<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="L")
        {
            for(int i=0;i<parzystokopytne.size();i++)
            {
                if(parzystokopytne[i].nazwa==nazwa_obiektu)
                {
                    cout<<"Wprowadz nowe wartosci:"<<endl;
                    parzystokopytne[i].Modyfikuj();
                    cout<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="M")
        {
            for(int i=0;i<nieparzystokopytne.size();i++)
            {
                if(nieparzystokopytne[i].nazwa==nazwa_obiektu)
                {
                    cout<<"Wprowadz nowe wartosci:"<<endl;
                    nieparzystokopytne[i].Modyfikuj();
                    cout<<endl;
                    goto A;
                }
            }
        }
        else
        {
            cout<<"\nPodany obiekt nie istnieje"<<endl<<endl;
            goto A;
        }
    }
    else if(wybor=="DIR")
    {
        if(zmiana=="D")
        {
            for(int i=0;i<nieloty.size();i++)
            {
                cout<<nieloty[i].nazwa<<endl;
            }
        }
        else if(zmiana=="E")
        {
            for(int i=0;i<latajace.size();i++)
            {
                cout<<latajace[i].nazwa<<endl;
            }
        }
        else if(zmiana=="G")
        {
            for(int i=0;i<torbacze.size();i++)
            {
                cout<<torbacze[i].nazwa<<endl;
            }
        }
        else if(zmiana=="H")
        {
            for(int i=0;i<niekopytne.size();i++)
            {
                cout<<niekopytne[i].nazwa<<endl;
            }
        }
        else if(zmiana=="L")
        {
            for(int i=0;i<parzystokopytne.size();i++)
            {
                cout<<parzystokopytne[i].nazwa<<endl;
            }
        }
        else if(zmiana=="M")
        {
            for(int i=0;i<nieparzystokopytne.size();i++)
            {
                cout<<nieparzystokopytne[i].nazwa<<endl;
            }
        }
    goto A;
    }
    else if(wybor=="SHOW")
    {
    cout<<"Podaj nazwe obiektu do wyswietlenia: "<<endl;
    cin>>nazwa_obiektu;
    if(zmiana=="D")
        {
            for(int i=0;i<nieloty.size();i++)
            {
                if(nieloty[i].nazwa==nazwa_obiektu)
                {
                    nieloty[i].Wyswietl();
                    cout<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="E")
        {
            for(int i=0;i<latajace.size();i++)
            {
                if(latajace[i].nazwa==nazwa_obiektu)
                {
                    latajace[i].Wyswietl();
                    cout<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="G")
        {
            for(int i=0;i<torbacze.size();i++)
            {
                if(torbacze[i].nazwa==nazwa_obiektu)
                {
                    torbacze[i].Wyswietl();
                    cout<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="H")
        {
            for(int i=0;i<niekopytne.size();i++)
            {
                if(niekopytne[i].nazwa==nazwa_obiektu)
                {
                    niekopytne[i].Wyswietl();
                    cout<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="L")
        {
            for(int i=0;i<parzystokopytne.size();i++)
            {
                if(parzystokopytne[i].nazwa==nazwa_obiektu)
                {
                    parzystokopytne[i].Wyswietl();
                    cout<<endl;
                    goto A;
                }
            }
        }
        else if(zmiana=="M")
        {
            for(int i=0;i<nieparzystokopytne.size();i++)
            {
                if(nieparzystokopytne[i].nazwa==nazwa_obiektu)
                {
                    nieparzystokopytne[i].Wyswietl();
                    cout<<endl;
                    goto A;
                }
            }
        }
        else
        {
            cout<<"\nObiekt nie istnieje"<<endl;
            goto A;
        }
    }
    else if(wybor=="SAVE")
    {
        ofstream Plik;
        Plik.open("zwierzeta.txt", ios::out|ios::trunc);
        Plik.close();
        for(int i=0;i<nieloty.size();i++)
            {
                ofstream Plik;
                Plik.open("zwierzeta.txt", ios::app);
                Plik<<"Nieloty"<<endl;
                Plik.close();
                nieloty[i].Zapisz();
            }
        for(int i=0;i<latajace.size();i++)
            {
                ofstream Plik;
                Plik.open("zwierzeta.txt", ios::app);
                Plik<<"Latajace"<<endl;
                Plik.close();
                latajace[i].Zapisz();
            }
        for(int i=0;i<torbacze.size();i++)
            {
                ofstream Plik;
                Plik.open("zwierzeta.txt", ios::app);
                Plik<<"Torbacze"<<endl;
                Plik.close();
                torbacze[i].Zapisz();
            }
        for(int i=0;i<niekopytne.size();i++)
            {
                ofstream Plik;
                Plik.open("zwierzeta.txt", ios::app);
                Plik<<"Niekopytne"<<endl;
                Plik.close();
                niekopytne[i].Zapisz();
            }
        for(int i=0;i<parzystokopytne.size();i++)
            {
                ofstream Plik;
                Plik.open("zwierzeta.txt", ios::app);
                Plik<<"Parzystokopytne"<<endl;
                Plik.close();
                parzystokopytne[i].Zapisz();
            }
        for(int i=0;i<nieparzystokopytne.size();i++)
            {
                ofstream Plik;
                Plik.open("zwierzeta.txt", ios::app);
                Plik<<"Nieparzystokopytne"<<endl;
                Plik.close();
                nieparzystokopytne[i].Zapisz();
            }
        Plik.open("zwierzeta.txt", ios::app);
        Plik<<"koniec"<<endl;
        cout<<"Zapisano"<<endl;
        Plik.close();
        goto A;
    }
    else if((wybor=="READ"))
    {
        ifstream Plik;
        string lisc;
        Plik.open("zwierzeta.txt", ios::app);

        while(Plik)
        {
        Plik>>lisc;
        if(lisc=="Nieloty")
            {
                Nieloty ob;
                ob.Nieloty::Odczytaj();
                nieloty.push_back(ob);
            }
        else if(lisc=="Latajace")
            {
                Latajace ob;
                ob.Latajace::Odczytaj();
                latajace.push_back(ob);
            }
        else if(lisc=="Torbacze")
            {
                Torbacze ob;
                ob.Torbacze::Odczytaj();
                torbacze.push_back(ob);
            }
        else if(lisc=="Niekopytne")
            {
                Niekopytne ob;
                ob.Niekopytne::Odczytaj();
                niekopytne.push_back(ob);
            }
        else if(lisc=="Parzystokopytne")
            {
                Parzystokopytne ob;
                ob.Parzystokopytne::Odczytaj();
                parzystokopytne.push_back(ob);
            }
        else if(lisc=="Nieparzystokopytne")
            {
                Nieparzystokopytne ob;
                ob.Nieparzystokopytne::Odczytaj();
                nieparzystokopytne.push_back(ob);
            }
        else if(lisc=="koniec")
        {
            Plik.close();
            break;
        }
        }
        cout<<endl;
        cout<<"Wczytano"<<endl;
        goto A;
        }
    else if(wybor=="TREE")
    {
        cout<<"\t\t\t\tZwierze"<<endl<<endl<<endl;
        cout<<"\t\tPtaki"<<"\t\t\t\tSsaki"<<endl<<endl<<endl;
        cout<<"\tNieloty"<<"\t\tLatajace"<<"\tLozyskowce"<<"\t\tTorbacze"<<endl<<endl<<endl;
        cout<<"\t\t\t\tNiekopytne"<<"\tKopytne"<<endl<<endl<<endl;
        cout<<"\t\t\t\tNieparzystokopytne"<<"\tParzystokopytne"<<endl<<endl<<endl;
        goto A;

    }
    }

return 0;

   }

0

Nie działa, jak w temacie, wczytywanie obiektu z pliku. Obiekty zapisują się poprawnie, z nazwą węzła na początku, która ma ułatwić wczytanie obiektu do odpowiedniego liścia, jednak przy wczytywaniu program chyba w ogóle nie zapisuje obiektu.
Funkcja wczytująca w klasie bazowej:

virtual void Odczytaj()
    {
        ifstream Plik;
        Plik>>nazwa;
        Plik>>wielkosc;
        Plik>>max_dl_zycia;
    } 

Ta sama funkcja w klasie dziedziczącej:

void Odczytaj()
    {
        Zwierze::Odczytaj();
        ifstream Plik;
        Plik>>waga;
        Plik>>kolor;
    } 

I wczytywanie:

else if((wybor=="READ"))
    {
        ifstream Plik;
        string lisc;
        Plik.open("zwierzeta.txt", ios::app);

        while(Plik)
        {
        Plik>>lisc;
        if(lisc=="Nieloty")
            {
                Nieloty ob;
                ob.Nieloty::Odczytaj();
                nieloty.push_back(ob);
            }
        else if(lisc=="Latajace")
            {
                Latajace ob;
                ob.Latajace::Odczytaj();
                latajace.push_back(ob);
            }
        else if(lisc=="Torbacze")
            {
                Torbacze ob;
                ob.Torbacze::Odczytaj();
                torbacze.push_back(ob);
            }
        else if(lisc=="Niekopytne")
            {
                Niekopytne ob;
                ob.Niekopytne::Odczytaj();
                niekopytne.push_back(ob);
            }
        else if(lisc=="Parzystokopytne")
            {
                Parzystokopytne ob;
                ob.Parzystokopytne::Odczytaj();
                parzystokopytne.push_back(ob);
            }
        else if(lisc=="Nieparzystokopytne")
            {
                Nieparzystokopytne ob;
                ob.Nieparzystokopytne::Odczytaj();
                nieparzystokopytne.push_back(ob);
            }
        else if(lisc=="koniec")
        {
            Plik.close();
            break;
        }
        }
        cout<<endl;
        cout<<"Wczytano"<<endl;
        goto A;
        } 
0

Olaboga, co to ma być?
Podziel to na pliki... a najlepiej w ogóle wywal i napisz od nowa, na spokojnie, porządnie...

Anyway, błąd jest chociażby tutaj:

        Zwierze::Odczytaj();
        ifstream Plik;
 
        Plik>>waga;
        Plik>>kolor;

Nigdzie nie otwierasz zmiennej Plik.

0

ogarnij tę member function Odczytaj;

zrób wszystkie składowe Zwierze protected (będziesz miał do nich dostęp z klas dziedziczących);

zrób Odczytaj pure virtualną void odczytaj() = 0;

i przeładowuj ją w funkcjach składowych dziedziczących np. virtual void Ptak::odczytaj() { Ptak p; ... ptaki.push_back(p); }

kod będzie bardziej przejrzysty i pewnie mniej błędny

2

A ja radzę przerobić odczytaj jeszcze inaczej.
Zamiast otwierać w niej plik przekazuj gotowy strumień jako parametr. Coś w tym stylu:

class Zwierze
{
...
    virtual std::istream &Odczytaj(std::istream &wejscie)
    {
        return wejscie >>nazwa >> wielkosc >> max_dl_zycia;
    }
...
};

class Ptak : public Zwierze
{
...
    std::istream &Odczytaj(std::istream &wejscie)
    {
        return Zwierze::Odczytaj(wejscie) >> waga >> kolor;
    }
...
};

W ten sposób nie skazujesz się tylko na plik, ale możesz też użyć innych strumieni np. konsoli co może się okazać bardzo praktyczne podczas testowania lub rozwijania kodu. Taks samo podczas korzystania z funkcji Zapisz.
Zwróć uwagę, że w ten sposób będziesz mógł zapisać do jednego pliku kilka ptaków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1