Code:
*temp = *this;
What's going on here? It looks like temp is an uninitialised pointer to a board, so it's pointing off into space for all we know, and then you dereference it and try to create a board at the memory address it's pointing to. Try allocating some space where the pointer is pointing.

Code:
temp = new board;
OTOH, it's early morning here and I'm half asleep, so take this for what it's worth.