У меня возникли проблемы с пониманием моего оператора C++ switch.Поведение оператора switch в C++
Я должен ввести принятый целочисленный интервал дважды, чтобы функция вернулась к коммутатору. А потом он падает прямо к случаю 2.
наследуемых Класс:
class Fugl : public DyrLuft
{
private:
int alder;
public:
Fugl() : DyrLuft()
{ }
void les()
{
do
{
cout << "\nSkriv inn fuglens alder: ";
cin >> alder;
if(alder < 0 || alder > 130)
cout << "\nDenne alderen virket usannsynlig, prøv igjen!\n";
} while(alder < 0 || alder > 130);
}
};
Главная:
int main()
{
char valg = '\q';
cout << "Hvilken dyreart ønsker du å registrere? (Q for å avslutte)"
<< "\n1) - Fugl \n2) - Fisk \n3) - Insekt \n4) - Skalldyr\n";
do
{
cin >> valg;
switch(valg)
{
case '1':
{
Fugl fugl; fugl.les();
} break;
case '2':
{
Fisk fisk; fisk.les();
} break;
case '3':
{
Insekt insekt; insekt.les();
} break;
case '4':
{
Skalldyr skalldyr; skalldyr.les();
} break;
case 'Q': return 0;
case 'q': return 0;
default: cout << "Velg en av ovennevnte!\n";
}
} while(valg != 'Q' || valg != 'q');
return 0;
}
какие входные данные? – Matt
Является ли '' \ nDenne alderen virket usannsynlig, prøv igjen! \ N "'напечатано между вводом' alder'? – IllusiveBrian
'char valg = '\ q';' кажется неправильным, но это не должно быть причиной вашей проблемы, так как 'valg' скоро перезаписывается ... Кроме того, что находится в' DyrLuft() '? Это вызывается, когда вы объявляете «Fugl fugl;». – rubikonx9