I would use extern instead of static. That's what extern is for.
In the header:
extern SoundEngine soundEngine;
In an accompanying source file:
SoundEngine soundEngine;
This will create one translation unit with the instance, and including the header will allow you to use it everywhere in your code.
// A.cpp #include <iostream> // other includes here ... extern int hours; // this is declared globally in B.cpp int foo() { hours = 1; } // B.cpp #include <iostream> // other includes here ... int hours; // here we declare the object WITHOUT extern extern void foo(); // extern is optional on this line int main() { foo(); }