My impression is that the intent was for the Puzzle and Box to share a single Debug. My code above tries to use the Debug copy constructor. I think the better way to do that is to have Box keep a pointer to the Debug and have the constructor initialize that pointer:
Box.h
#ifndef BOX_H
#define BOX_H
#include "Debug.h"
class Box {
private:
Debug * _debug;
public:
Box(Debug &debug);
void begin();
};
#endif
Box.cpp
#include "Box.h"
#include <Arduino.h>
Box::Box(Debug &debug) : _debug(&debug)
{
}
void Box::begin()
{
pinMode(28, INPUT_PULLUP);
}