I'm afraid I have to point you to ApochPiQ's Become a Good Programmer in Six Really Hard Steps.
Long story short: you crack your head open till you can figure out how to make those classes comminicate. There's no reading, nor learning. Adding more APIs might make it worse instead of better. Designing interfaces and protocols (sequence of function calls) comes from experience and you have to build that.
What you need to do is to really focus less on implementing and more in designing, or engineering if you want.
Also try to keep a decent documentation for your own code using doxygen: if you find that you cannot document something clearly, that means the concept regarding that class is unclear even to you.
And this is why you cannot connect the classes together: they don't have a "shape" you can perceive.
Also, if you tried to make a game (a single game) I'm afraid that's just normal. Just keep doing that.