The reason you're finding this difficult to do is because it's very dangerous. You really shouldn't be doing it.
One of these objects will not be fully constructed at the time its reference is assigned, which leaves potential for a dangling references which can cause strange behavior / crashes. Furthermore I'm not sure if there's even a way to tell WHICH object is the one that won't be constructed.
This means neither Foo nor Bar's constructor (or the constructor of any derived classes) can use those references or call any functions that use the references. Since that is very difficult to enforce, you're basically BEGGING to shoot yourself in the foot with this.
Don't do it. Redisign your system so this isn't necessary.