
n standard C++, the initialization order of objects with
static storage type that are declared in separate
translation units is unspecified. If, for instance, a constructor of object A takes as an argument a value returned from a member function of object B, B must be constructed before A. However, if A and B are defined in separately compiled files, there's no guarantee that B will be constructed first.

How can you ensure that objects defined in separately compiled files are constructed in a desired order?

Avoid global objects. Use special accessor functions instead.