Usuwanie elementu typu klasa z vector

0

Witam. Piszę program składający się z 3 klas: CAkwarium, CSlimak i CRoslina. W klasie akwarium zbudowałem vector w którym umieszczam rosliny i slimaki. Mój problem polega na usunięciu z vector elementu.
Fragmenty kodów:

//tak tworzę vector zbudowany z elementow klasy CRoslina

class CAkwarium 
       {
        public:
        int oswietlenie;
        vector<CSlimak*> slimaki;
        vector<CRoslina*> rosliny;
        ...
        }

//metoda tworząca rosliny w klasie akwarium:

void CAkwarium::stworz_rosliny(int ile)
        {
        int i=0;
        while(i<ile)
                        {
                        CRoslina* rosl=new CRoslina;
                        rosliny.insert(rosliny.end(), rosl);
                        i++ ;
                        };
        };

Problem mam z usunięciem elementów:
Próbowałem robić to tak:

void CAkwarium::usun_rosline(int ktora)
        {
        CRoslina* rosl=rosliny[ktora];
        rosliny.erase(rosl);
        delete rosl;
        };

Ale tu pojawia mi sie błąd:
[C++ Error] CAkwarium.cpp(61): E2285 Could not find a match for 'vector<CRoslina *, allocator<CRoslina *> >::erase(CRoslina *)'

Próbowałem też usuwać w poniższy sposób, ale to pomimo poprawnej kompilacji nie przyniosło efektów w głównym programie.

void CAkwarium::usun_slimaka(int ktory)
        {
        delete rosliny[ktory];
        };

Jak poprawnie usunąć mam z vector'a element typu CRoslina.?
Za odp z góry dzięki.

0

To jest dobrze:

delete rosliny[ktory]; // usuwasz obiekt ktory stworzyles w pamieci

Dodaj jeszcze:

rosliny.erase( rosliny.begin() + ktory ); // usuniecie ktory-ego elementu w "rosliny"

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