Не создавайте экземпляры объектов в заголовках.
Создайте свой экземпляр объекта в одном исходном файле.
Если вам требуется доступ к нему через несколько единиц перевода,поместите это в свой заголовок:
extern imgmanager imagemgr; // declaration
Это сообщит всему коду, который может «видеть» заголовок, что существует так называемый объект;но на самом деле он будет определен только в одном исходном файле, в котором вы написали:
imgmanager imagemgr; // definition
(Это аналогично тому, как вы объявляете функции в заголовке, но определить их точно в одном исходном файле:
void f(); // declaration
void f() { ... } // definition
)
Приведенный выше общий совет, должным образом переданный, я бы сейчас поставил под сомнение в обосновании наличия класса ввсе, если вы собираетесь использовать только один единственный глобальный экземпляр.Либо сделайте его «одноэлементным» классом, либо используйте вместо него свободные функции в пространстве имен.