Я пытаюсь заполнить вектор производными классами животных (собака, кошка и т. д.). Когда я вынимаю содержимое вектора, я хочу вернуть его обратно в производные классы.
После выполнения dog.setLegs(4) я получаю правильное количество ног с помощью getLegs(). Однако после получения объекта Animal из вектора animals и приведения его обратно к типу Dog mydog->getLegs() возвращает мне 0 вместо 4, как я ожидал.
Я думаю, что я делаю что-то неправильно здесь, но я не уверен, что. Может ли кто-нибудь помочь мне с этим? Спасибо!!
class Animal{
};
class Dog : public Animal {
public:
void setLegs(int newLegs){legs = newLegs;};
int getLegs(){return legs;};
protected:
int legs=0;
};
int main(int argc, char* argv[]){
Dog dog;
dog.setLegs(4);
std::cout<<dog.getLegs()<<std::endl;
std::vector<Animal> animals;
animals.push_back(dog);
Dog *mydog = (Dog*) &(animals[0]);
std::cout<<mydog->getLegs()<<std::endl;
return 0;
}