Passing a single class instance to another class

What are you trying to do here? _debug is already initialized, why assign a new instance to it?

Why not just:

class Puzzle {  
  private:
    Debug _debug;
    Box _box { _debug };
  public:
    void setup();
    void loop();
};
void Puzzle::setup(){
  _debug.line("Puzzle Setup");
}