Nie masz header guarda, przez co dwa razy includowany plik dodaje swoje definicje dwa razy i w konsekwencji mamy "redefinition of..."
Żeby zabezpieczyć plik nagłówkowy przed tym możesz użyć na początku pliku
#pragma once
Lub #ifndef - IMHO lepiej to wygląda:
#ifndef MY_HEADER_HPP_INCLUDED
#define MY_HEADER_HPP_INCLUDED
// Tutaj cala zawartosc naglowka
#endif //MY_HEADER_HPP_INCLUDED