I'm trying to make a Animal class hierarchy but I'm getting this error: undefined reference to `vtable for animals::Chicken'
Here is the code:
animals.h
namespace animals {
class Animal {
public:
virtual void make_noise() = 0;
virtual void eat() = 0;
virtual ~Animal() {}
};
class Chicken : public Animal {
int age;
bool rooster;
public:
Chicken() : age(0), rooster(false) {}
~Chicken() override {}
void make_noise() override;
void eat() override;
};
} // namespace animals
animals.cpp
#include "animals.h"
#include <iostream>
void animals::Animal::make_noise() { std::cout << "be caw!" << '\n'; }
void animals::Animal::eat() { std::cout << "peck... peck.." << '\n'; }
and main.cpp
#include "animals.h"
#include <iostream>
int main() {
std::cout << "Welcome to C++" << '\n';
animals::Animal *an = new animals::Chicken();
an->make_noise();
return 0;
}