i have made Animal an abstract base class,
iam supposed to be able to create Dog, Cat and Snake objects,
but there is an error.
please help
Code:
#include"stdafx.h"
#include<iostream>
#include<string>
using namespace std;
class Animal
{
string name;
protected:
Animal(const string& nameP) :name(nameP){}
public:
virtual string getSound() = 0;
string getName() const { return name; }
};
class Dog :public Animal
{
public:
Dog(const string& nameP) :Animal(nameP){}
string getSound()const{ return "woof"; }
};
class Cat :public Animal
{
public:
Cat(const string& nameP) :Animal(nameP){}
string getSound()const{ return "meow"; }
};
class Snake :public Animal
{
public:
Snake(const string& nameP) :Animal(nameP){}
string getSound()const{ return "hiss"; }
};
void report(const Animal& animal);
int main()
{
Dog rocky("Rocky");
Cat sylvester("Sylvester");
Snake eikens("Eikens");
Animal* array[] = { &rocky, &sylvester, &eikens };
for (auto x : array)
report(*x);
}
void report(const Animal& animal)
{
cout << animal.getName() << " says\t" << animal.getSound() << endl;
}