I have a class in a header:

```
class Communicator {
public:
std::map<std::string,obj::obj_version<obj::tkt_metadata>*> local_objects;
}

```

When I compile I can create a Communicator later in the code and use the map as normal, with no problem.

However, as soon as I put after the class declaration:

```
extern Communicator comm;

```

And add:

```
Communicator comm;

```

To the implementation file for the header, I get "error: ‘obj’ was not declared in this scope" etc, where `obj` is the namespace that contains obj\_version and tkt\_metadata (and precedes the inclusion of my communicator header). 

What is going on here, and is there anything I can do to get it to compile correctly? Thanks!