You have cycles in your headers. All header files rely on Share.hpp, but Share.hpp includes the others that depends on it.
You need to break those cycles.
>>NetworkHandler NHandler; //<----------- ERROR : NetworkHandler does not name a type
This should not be in a header. Global variables should be in .cpp files. Then you put
extern NetworkHandler NHandler;
in your header.
You might be able to get away with doing
before your extern declaration.
Or you simply break it off into another header file.
And I don't see why Share.hpp needs ClientHandler.hpp.