I've not read in details but seems the compiler complains that you pass a pointer where it expects a reference
error: no matching function for call to 'Box::Box(Debug*)'
try with
void Puzzle::setup(){
_debug = Debug();
_box = Box(_debug);
_debug.line("Puzzle Setup");
}