board[move] = EMPTY;
должно выполняться только если !found
. Но, вероятнее всего в этом коде только проба шага и анализ на выигрыш, а фактический шаг должен делаться в коде дальше по тексту книги. C++ использует манглинг для имен для поддержки классов, перегрузок, шаблонов.
все конструкции, которые нужны, описаны здесь
Какая логика у вывода карты, какая логика у обработки ввода пользователя?