I have the following circular dependency that I'd like to eliminate. I think I must have a flaw in my design. And I'd much appreciate any feedback on how to fix this. My circular dependency comes from 3 important classes. Worker, WorkingContext, and TaskManager.First, I have 2 Worker classes (Worker, and WorkerGroup). Each Worker is constructed with a WorkingContext object that stores state info.class Worker {    Worker(WorkingContext * context);};class WorkerGroup{};Next, I have WorkingContext.class WorkingContext{    // state info and various getters    ...    TaskManager * getTaskManager();};As shown, one of the things the WorkingContext stores is a TaskManager, which has a number of useful functions that depend on Worker. Here is a snippetclass TaskManager{    void assignCredit(Worker * worker, WorkerGroup * group, int credit);    void revokeCredit(Worker * worker, int credit);};The circular dependency is that Worker.h needs to #include WorkingContext.h, which needs to #include TaskManager.h, which in turns needs to #include Worker.h.  Right now it works since I'm using forward reference, but that really is a last resort. 
Help with getting rid of circular dependency
design;c++;object oriented design;circular dependency