Я сделал «компьютер». Моя conctructor выглядит следующим образом:Member function не выполняет весь код
PC::PC()
{
cout << "Would you like to turn the pc on? type y for yes." << endl;
a = getchar();
while (a != 'y')
{
cout << "If you dont turn it on, then nothing will happen. Loser." << endl;
a = getchar();
}
}
Затем, если нажать у вас будет отправлен к следующему шагу, который является функцией PC :: PCON, который выглядит следующим образом:
void PC::pcOn()
{
for (auto i = 0; i < 3; i++)
{
cout << "----------------------------------------" << endl;
}
cout << "--------- What is your name? -----------" << endl;
changeName();
for (auto i = 0; i < 3; i++)
{
cout << "----------------------------------------" << endl;
}
for (auto i = 0; i < 5; i++)
{
cout << "**" << endl;
Sleep(100);
}
cout << "Welcome " << name << " to the future of computing." << endl << endl;
cout << "This computer program can do a lot of things for you" << endl << "it is a good calculator, try to type \"calculater\"" << endl;
}
Однако, когда я есть цикл while в contructor, чтобы заставить y идти, changeName(); wont work, но если я удалю это, функция changeName работает просто отлично, и он принимает мои данные только отлично.
Код для changeName() выглядит следующим образом:
void PC::changeName()
{
string _name;
getline(cin, _name);
name = _name;
}
Я попытался с помощью отладчика в Visual Studio, чтобы понять, почему я не буду называть его правильно, но увы нет надежды. Странно, что функция работает нормально, если цикл while в конструкторе отсутствует.
Возможный дубликат: [Почему STD :: GetLine() пропустить ввод после отформатированный извлечения?] (HTTP: //stackoverflow.com/questions/21567291/why-does-stdgetline-skip-input-after-a-formatted-extraction) – NathanOliver