Após alguns minutos pensando, foi fácil resolver, são apenas alterações simples:
forca.cpp, adicionamos a variável de contador de chutes, e passamos ela como parâmetro da função chuta
static int chutes_dados = 0;
[...]
Forca::chuta(chutes_errados, chutou, palavra_secreta, chutes_dados);
Já no chuta.hpp e chuta.cpp, alteramos apenas os parâmetros passados:
chuta.hpp e chuta.cpp
void Forca::chuta(std::array<char, 5>& chutes_errados, std::map<char, bool>& chutou, const std::string& palavra_secreta, int& chutes_dados) {
E por fim, no chuta.cpp modificamos como o array é acessado e os valores registrados:
void Forca::chuta(std::array<char, 5>& chutes_errados, std::map<char, bool>& chutou, const std::string& palavra_secreta, int& chutes_dados) {
std::cout << "Seu chute: ";
char chute;
std::cin >> chute;
chutou[chute] = true;
if (Forca::letra_existe(chute, palavra_secreta)) {
std::cout << "Você acertou! Seu chute está na palavra." << std::endl;
}
else {
std::cout << "Você errou! Seu chute não está na palavra." << std::endl;
chutes_errados[chutes_dados] = chute; // Aqui acessamos o array e preenchemos
chutes_dados++; // Aqui aumentamos o contador em 1 para cada vez que um erro ocorreu
}
std::cout << std::endl;
}