Я бы использовал указатель Board*
вместо ссылки Board&
, особенно если учесть подкласс:
void Player::move(Board **board, Solver &solver)
{
Position *best = solver.find_best_move(*board);
cout << "Score: " << best->get_score() << endl;
*board = best->get_board();
cout << "Board: ";
(*board)->print_board();
}
Player p;
Solver solver;
Board *b = ...;
p.move(&b, solver);
Или:
void Player::move(Board* &board, Solver &solver)
{
Position *best = solver.find_best_move(board);
cout << "Score: " << best->get_score() << endl;
board = best->get_board();
cout << "Board: ";
board->print_board();
}
Player p;
Solver solver;
Board *b = ...;
p.move(b, solver);