¿Cómo paso una matriz a un constructor?

Quiero pasar una matriz a un constructor, pero solo se pasa el primer valor; el resto parece basura.

Aquí hay una versión simplificada de lo que estoy trabajando:

#include <iostream>

class board
{
    public:
        int state[64];
        board(int arr[])
        {
            *state = *arr;
        }
        void print();
};

void board::print()
{
    for (int y=0; y<8; y++)
    {
        for (int x=0; x<8; x++)
            std::cout << state[x + y*8] << " ";
        std::cout << "\n";
    }
}

int main()
{
    int test[64] = {
        0, 1, 2, 3, 4, 5, 6, 7,
        1, 2, 3, 4, 5, 6, 7, 8,
        2, 3, 4, 5, 6, 7, 8, 9,
        3, 4, 5, 6, 7, 8, 9,10,
        4, 5, 6, 7, 8, 9,10,11,
        5, 6, 7, 8, 9,10,11,12,
        6, 7, 8, 9,10,11,12,13,
        7, 8, 9,10,11,12,13,14 };

    board b(test);
    b.print();

    std::cin.get();
    return 0;
}

¿Alguien puede explicar por qué esto no funciona y cómo pasar una matriz correctamente? Además, no quiero copiar la matriz. (¿Y realmente tengo que sangrar cada línea por 4 espacios para el código? Eso es bastante tedioso).

Respuestas a la pregunta(12)

Su respuesta a la pregunta