Tic Tac Toe game in C++ 11
I would recommend making a main game loop. Running a loop in a constructor breaks the fundamental contract of a constructor: to construct something. This change will also allow you to easily restart the game and keep track of score if you wish. With that said, adding a StartGame, RestartGame and EndGame functionality may help organize things.

I tend to shy away from enums. If I find myself needing an enum, I always end up realizing I actually want a class. This follows the S in SOLID: single responsibility.

There is a line of code in check_winner that goes well over 100 columns. I would wrap the line after every few boolean operators in an if statement like this.

if((table_board[i][0] &amp; table_board[i][1] &amp; table_board[i][2])!=0
  || (table_board[0][i] &amp; table_board[1][i] &amp; table_board[2][i])!=0
  || (table_board[i][0] &amp; table_board[i+1][1] &amp; table_board[i+2][2])!=0
  || (table_board[i][2] &amp; table_board[i+1][1] &amp; table_board[i+2][0])!=0)
{
...
}


You seem to be using the new operator where you don't need to. All of this can be done on the stack with less lines of code and less work for the processor. Every time you call new, the CPU has to find new space on the heap, construct the datatype and return the pointer to the memory address. Considering how small this program is, it's likely all your data could fit in the registry directly on the CPU.

void read_move()
{
    int moveX = 0;
    int moveY = 0;
    std::cout &lt;&lt; "\nChoose a field (Player " &lt;&lt; which_player &lt;&lt; "): ";
    std::cin &gt;&gt; moveX &gt;&gt; moveY;
    write_move(moveX, moveY, which_player);
}


check_winner also has a similar problem.

draw_board does not need to take in a table_board because it is already accessible as a member, also I would avoid giving function parameter the same names as members. I'd recommend putting a lowercase 'm' before your member variables and using pascal case.

After the appropriate code changes, you shouldn't have any pointers in your code, but just as a side note:

nullptr is now the standard for assigning pointers to null in C++11. nullptr is of type std::nullptr_t where NULL is an int.