Yeah, I know that trick and I use it.

I've got a Dropship class. It has to know about the FuelCanister class and vice versa. They attach to eachother.

If the fuel canister is destroyed while the Dropship is carrying it, the fuel truch flies off.

If the fuel canister hits the ground the Dropship flies off.

If the Dropship is hit, it drops the canister and flies off, the canister then falls to the ground and explodes on contact.

I could probably have coded it differently, perhaps had a TCarryable object which the Dropship can carry and apply all of the above rules to it. Then make the FuelCanister inherit from TCarryable. But the Dropship will only ever deliver fuel so it's not an issue.

I don't really like using that trick though, it seems messy. I feel that the compiler should be smart enough to figure it out without me having to resort to tricks.