Ваш аргумент функции - std::vector<int>
. Таким образом, .begin()
дает вам хороший std::vector<int>::iterator
. Это соответствует использованию в вашем цикле.
Однако ваш член, при доступе через const
функцию члена, такую как showField
, также является const
. Сейчас в этом контексте const std::vector<int>
. Таким образом, .begin()
дает вам std::vector<int>::const_iterator
.
Вы явно выписали std::vector<int>::iterator
, и эти два не совпадают.
Вы не изменяете значения, поэтому просто придерживайтесь std::vector<int>::const_iterator
или, знаете, auto
.
Я имею в виду, что вы действительно хотите это:
void GameBoard::showField() const
{
for (const auto& el : board)
std::cout << ' ' << el;
std::cout << '\n';
}
В идеале, взять поток в качестве аргумента:
std::ostream& GameBoard::showField(std::ostream& os) const
{
for (const auto& el : board)
os << ' ' << el;
os << '\n';
return os;
}
Теперь мы говорим.