프로그램이 두 번째 루프에 들어가면 두 번째 루프의 값을 false로 설정하더라도 무한이됩니다. 문제가 발생하는 곳은 어디입니까? 처음 while 루프는 어떤 문제도 발생하지 않지만 두 번째 것은 ... 어디서 또는 왜 볼 수 없습니다.루프 내부 스위치가 무한이됩니다
int RareData::assignRareType()
{
int switchType;
std::cin >> switchType;
bool valid = true;
bool valid2 = true;
while (valid)
{
switch (switchType)
{
case 0:
std::cout << "1 - Character Change\n2 - Account Change\n3 - Both\n";
int switchData;
std::cin >> switchData;
valid2 = true;
while (valid2)
{
switch (switchData)
{
case 1:
valid2 = false;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
assignCharacter();
break;
case 2:
valid2 = false;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
assignAccount();
break;
case 3:
valid2 = false;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
assignAccount();
assignCharacter();
break;
default:
std::cout << "Options only range from 1-3\n1 - Character Change\n2 - Account Change\n3 - Both\n";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin >> switchData;
}
}
break;
default:
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin >> switchType;
}
}
return 0;
}
... 디버거를 사용하십시오. 나는 디폴트 케이스가 항상 실행되고 있는지, 적어도 적어도 valid2는 항상 true인지를 보증한다. –
'valid'를'false'로 설정하지 않으므로 외부 루프가 무한합니다. –
Obvlious 선장님, 제가 필요한 모든 설명이었습니다. –