Why can I only access public object instances within their own file and not outside?

Yes, this line is our problem:

static parser Parser; 

You get a local instance in each file where you include Parser.h. But you should have only one global instance.