I straight up never got a nice answer from StackOverflow on this. Say you have 5 classes, each requiring access to the data members/functions of the others. What's a nice way to solve this problem? I've thought of only two nice shit methods:
Pass pointers/shared-pointers etc to each class, but not through the constructor but a setter function
Pass lambdas or std::function everywhere. Yuck! Still doesn't put each object in a valid state in the constructor.
The. real question is whether this problem needs to be modelled using classes in the first place. The alternative is to just have a set of composable functions that take a piece of data and return a modified version that can be passed to a different function.