My code pass the compiler, but I have a question about the concept of the pointer.
main.cpp:
int main(int argc, const char * argv[])
{
    int inputPuzzle[3][3];
    std::cout << "Set the puzzle: " << "\n";
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            std::cin >> inputPuzzle[i][j];
        }
    }
    puzzle puzzle_1 = *new puzzle(inputPuzzle);
    puzzle_1.display();
    return 0;
}
puzzle.h:
class puzzle
{
    public:
        puzzle();
        puzzle(int [][maxCol]);
        ~puzzle();
    public:
        int puzz [maxRow][maxCol];
};
puzzle.cpp:
puzzle::puzzle(int a[][maxCol])
{
    for (int i = 0; i < maxRow; i++) {
        for (int j = 0; j < maxCol; j++) {
            puzz[i][j] = a[i][j];
        }
    }
}
My question is about the statement :puzzle puzzle_1 = *new puzzle(inputPuzzle);
Why do I have to add "*" in front of the new object in which I want to assign a 2D array ?
 
     
     
     
    