The answer is, it depends.
Do both objects require the other being up and running?
You are SOL, they cannot both be constructed last. Reconsider your design. Maybe you can get basic service set up without referring to the other object for one of them, think multi-stage init.
Do both only need to save that reference for later use?
The order does not matter, use a forward declaration for at least one of them. You might even define them in separate compilation units.
Does exactly one of them potentially use the other in its ctor / dtor (including indirectly)?
Define that object later in the same compilation unit and you are ok.
extern Type name; // This is a forward declaration, like in headers