Вы не используете возвращаемое значение std::string::find()
.
std::string::find()
возвращает индекс указанного символа или std::string::npos
( -1) если не найден. Он не возвращает bool
, как, по-видимому, думает ваш код.
Когда вычисляется оператор if
, ненулевое целочисленное значение обрабатывается как истина. Это означает, что ваш код будет пытаться выполнить upperRowPiecesToPlay.replace()
, если letter
найден по какому-либо индексу , кроме 0 , или вообще не найден .
Но нет перегрузки std::string::replace()
, которая будет принимать letter
в качестве ввода. Вместо этого вам нужно дать ему индекс, который возвращает find()
, если это не npos
.
Попробуйте вместо этого:
void moveLetter(char letter, int position)
{
std::string::size_type index = upperRowPiecesToPlay.find(letter);
if (index != std::string::npos) {
upperRowPiecesToPlay.replace(index, 1 , " ");
// alternatively:
// upperRowPiecesToPlay[index] = ' ';
...
}
...
}