Problem z przeszukaniem klasy i usuwaniem.

0

Od początku. Mam klasę kotów. Problem tego typu: usuwanie obiektów. Gdy wpiszę imię takie jakie mam obiektu dodanego, gdy wpiszę innego wywala mi błąd. Może ktoś potrafi pomóc.

    Dziedziczenie * pom = nast;
    Dziedziczenie * pom2 = nast;
    if (pom != NULL && pom->kot == kot)
    {
        nast = nast->nast;
    }
    else 
    {
        while(pom2->nast !=NULL && pom2->nast->kot != kot)
        {
            pom = pom->nast;
        }
        if (pom2==NULL)
        {
            cout << "Nie mozna usunac kota\n";
            return;
        }
        pom = pom2->nast;
        pom2->nast = pom2->nast->nast;
    }
    
    cout << "\n\tKot :\n"<<endl;
    kot->pokaz();
    cout << "\n\tSkasowany"<<endl;
    delete pom->kot;
    delete pom;
    ilosc--;
}

streamsize _Count = (streamsize)_Traits::length(_Val);	// may overflow
streamsize _Pad = _Ostr.width() <= 0 || _Ostr.width() <= _Count ? 0 : _Ostr.width() - _Count;
const typename _Myos::sentry _Ok(_Ostr);
0
pawel1021 napisał(a)

Od początku. Mam klasę kotów. Problem tego typu: usuwanie obiektów. Gdy wpiszę imię takie jakie mam obiektu dodanego, gdy wpiszę innego wywala mi błąd. Może ktoś potrafi pomóc.

    Dziedziczenie * pom = nast;
    Dziedziczenie * pom2 = nast;
    if (pom != NULL && pom->kot == kot)
    {
        nast = nast->nast;
    }
    else 
    {
        while(pom2->nast !=NULL && pom2->nast->kot != kot) // pętla kręci się wg POM2 oraz KOT
        {
            pom = pom->nast;  //zmieniasz tylko POM, 
        }                                    // <-------- TU, może pętla źle zamknięta?
        if (pom2==NULL)        // a tutaj czemu POM2 a nie POM? POM się w pętli zmieniało
        {
            cout << "Nie mozna usunac kota\n";
            return;
        }
        pom = pom2->nast;
        pom2->nast = pom2->nast->nast;
    }
    
    cout << "\n\tKot :\n"<<endl;
    kot->pokaz();
    cout << "\n\tSkasowany"<<endl;
    delete pom->kot;
    delete pom;
    ilosc--;
}

streamsize _Count = (streamsize)_Traits::length(_Val);	// may overflow
streamsize _Pad = _Ostr.width() <= 0 || _Ostr.width() <= _Count ? 0 : _Ostr.width() - _Count;
const typename _Myos::sentry _Ok(_Ostr);

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