I have two report.h files located in two different directories. However the contents of them are different. How can I include the report.h file located in guarddog into the report.h file located in sky?
You can make sure your include path only contains the appropriate directory.
If you need both directories in your include path, then you'll need to make sure the common parent directory is in the include path, and put the subdirectory in your include statements, e.g.
#include "guarddog/report.h"
or
#include "sky/report.h"
I'd also strongly advise that you put the contents of each header file into a different namespace. That will help remove all ambiguity within your code.