나는 거의 모든 것을 시도했지만, 내가이 함수를 호출 할 때 왜이 함수가 아무 것도하지 않을 이유를 알 수 없다. 이 함수는 올바르게 호출됩니다. saveGame(hscore, selectedSaveSlot);
(hscore
및 selectedSaveSlot
은 int
으로 올바르게 정의되었습니다.) 또한이 함수는 switch
문 내에서 다른 함수 내에서 호출됩니다. 누구나 왜 그것이 효과가 없을지에 대한 아이디어가 있습니까?(C++) saveGame() 함수의 문제점은 무엇입니까? 함수를 호출하면 함수가 실행되지 않지만 오류가 없습니다.
(즉,이 함수를 호출 할 때 아무 것도 말하지 않고 저장 파일을 만들지 않으면 코드가 건너 뛰고 끊김없이 계속 실행됩니다.)
void saveGame(int highscore, int saveSlot) {
ofstream saveFile1;
ofstream saveFile2;
ofstream saveFile3;
switch (saveSlot) {
case '1':
saveFile1.open("SaveFile1.txt", ios::out);
saveFile1 << highscore;//writing highsore to a file
saveFile1.close();
cout << "Your game has been saved successfully!" << endl;
delayScroll(10, 50);
break;
case '2':
saveFile2.open("SaveFile2.txt", ios::out);
saveFile2 << highscore; //writing highsore to a file
saveFile2.close();
cout << "Your game has been saved successfully!" << endl;
delayScroll(10, 50);
break;
case '3':
saveFile3.open("SaveFile3.txt", ios::out);
saveFile3 << highscore; //writing highsore to a file
saveFile3.close();
cout << "Your game has been saved successfully!" << endl;
delayScroll(10, 50);
break;
}
inMenu = true;
}
충분히 구체적인 것은 아니지만 유감스럽게도 누군가가 답변이나 제안을 제공해 드릴 수 있으면 좋겠습니다. 어떤 의견이라도 대단히 감사합니다! 고맙습니다! – ajaj777
'saveSlot'이 ''1 '..'3 ''의 범위에 없거나 실제로'1 .. 3'의 값을 갖는'int'가 될 수 있습니까? 'switch' 문에서, 적용된 다른 레이블이 하나도 없으며 오류가있을 수 있다고 알려주지 만, 항상 'default :'레이블을 갖는 것이 합리적입니다. 하지만 실제로는'case 1 :'등을 의미하고'case '1':'등이 아닌 것으로 추측합니다. –
함수가 호출 될 때 터미널에서 무엇을 말합니까? (saveSlot과 같이) 디버그 할 변수를 출력 해보십시오. 왜 스위치 구문을 사용하고 있습니까? 코드를 변경하지 않아도되도록 등록하십시오. –