I have made a "computer". My conctructor looks like this:
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();
    }
}
Then if you press y you will be sent to the next step which is the function PC::pcOn which looks like this:
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;
}
However when i have the while loop in the contructor to get the y to go on, the changeName(); wont work, but if i remove that, the changeName function works just fine, and it takes my input just fine.
The code for the changeName() looks like this:
void PC::changeName()
{
    string _name;
    getline(cin, _name);
    name = _name;
}
I have tried using the Visual Studio's debugger to see why i wont call it correctly, but alas to no hope. The weird thing is, that the function works fine if the while loop in the constructor is not there.