Я получаю эти ошибки с блоками кода IDE (с компилятором g ++) «является приватным» для каждой переменной-члена. Насколько я знаю, законно использовать только частные переменные в других членах, что я и делаю. Это код моего CPP:Кодовые блоки и ошибка g ++ «являются частными»
/*
bullsAndCows.cpp
*/
using namespace std;
//enum class state {_bull, _cow, _none};
class bullsAndCows {
private:
const int m_size{4};
bool m_guessed{false};
std::vector<char> m_digit;
std::vector<state> m_digitState;
public:
bullsAndCows() {
m_guessed = false;
for(int i = 0; i < m_size; i++)
m_digitState[i] = state._none;
}
void bullsAndCows::setGuessed(bool value) { _guessed = value; }
bool bullsAndCows::getGuessed() { return _guessed; }
void bullsAndCows::setDigit(char value, int i) { m_digit[i] = value; }
char bullsAndCows::getDigit(int i) { return m_digit[i]; }
void bullsAndCows::setDigitState(state value, int i) { m_digitState[i] = value; }
state bullsAndCows::getDigitState(int i) { return m_digitState[i]; }
};
этот код мой основной, где я тестирование:
#include "bullsAndCows.h"
using namespace std;
int main()
{
bullsAndCows game;
for(int i = 0; i < game.m_size; i++) {
cin >> game.m_digit[i];
cout << game.m_digit[i];
}
return 0;
}
C++ 11 флаг активируется на компилятор.
Ваша основная функция() пытается подключить game.m_digit к cout, а также прочитать ее из cin. Main не может видеть m_digit, потому что он является конфиденциальным. Попробуйте прочитать во временную переменную, а затем вызовите setDigit() и getDigit() в соответствии с интерфейсом вашего класса. – qeadz