I'm currently learning Object Oriented Programming and I came with this doubt:
Let's say I have an abstract class Animal. To simplify, it will have only one virtual method, talk:
class Animal {
public:
virtual string talk() = 0;
}
And the classes Cat and Dog, both derived from the abstract class Animal:
class Cat : public Animal {
public:
string talk(){
return "Meow";
}
}
class Dog : public Animal {
public:
string talk(){
return "Woof";
}
}
I want to create the class Pet, which receives a Dog or a Cat as argument:
class Pet {
public:
Pet(Animal myPet){
this->myPet = myPet;
}
Animal myPet;
}
However, I cannot do this, since "Animal" is an abstract class. How can I solve this problem?