Mam taki kod:
#include<iostream>
#include<conio.h>
#include<vector>
class Zwierzatko
{
public:
Zwierzatko(){}
virtual ~Zwierzatko(){std::cout<<"Zwierzatko destrukt.\n";}
virtual void daj_glos()=0;
};
class Piesek:public Zwierzatko
{
public:
Piesek(){}
~Piesek(){std::cout<<"Piesek destrukt.\n";}
void daj_glos(){std::cout<<"hau, hau\n";}
};
class Kotek: public Zwierzatko
{
public:
Kotek(){}
~Kotek(){std::cout<<"Kotek destrukt.\n";}
void daj_glos(){std::cout<<"miau miau\n";}
};
int main()
{
Zwierzatko *piesek = new Piesek();
Zwierzatko *piesek2 = new Piesek();
Zwierzatko *kotek = new Kotek();
Zwierzatko *kotek2 = new Kotek();
std::vector<Zwierzatko*> zwierzatka;
zwierzatka.push_back(piesek);
zwierzatka.push_back(piesek2);
zwierzatka.push_back(kotek);
zwierzatka.push_back(kotek2);
for (Zwierzatko* i: zwierzatka)
i->daj_glos();
std::vector<Zwierzatko>::iterator it;
for (it = zwierzatka.begin(); it != zwierzatka.end(); ++it)
it->daj_glos();
delete piesek;
getchar();
}
W ostatniej pętli jest błąd: for (it = zwierzatka.begin(); it != zwierzatka.end(); ++it)
kompilator wyrzuca mi błędy C2678 i C2679.
Jak zainicjować tą pętlę poprawnie?