#include <iostream>
#include "Animal.h"
#include "Base.h"
int main()
{
Animal * a = new Animal;
std::cout << a->base->getNumber();
}
class Base {
public:
Base ();
virtual ~Base ();
public:
virtual unsigned int getNumber() {
return 1;
}
};
#include "Base.h"
class Derived : public Base {
public:
~Derived () {}
public:
unsigned int getNumber () override;
};
class Base;
class Animal {
public:
Animal ();
~Animal ();
public:
Base* base = nullptr;
};
#include "Animal.h"
#include "Derived.h"
Animal::Animal () {
base = new Derived;
}
#include "Derived.h"
unsigned int Derived::getNumber () {
return 5;
}
#include "Base.h"
Base::Base()
{
}
Base::~Base()
{
}