我實施了一個測驗代碼,並在其結尾做了一個短暫的更改,以檢查用戶是否正確回答了它。C++返回布爾總是假?
我的if/else是這樣的:
if (answer == rightanswer){
rightA = true;
}
else {
rightA = false;
}
return rightA;
我已經用,如果輸入了正確的答案不言而喻rightA =真正的調試檢查;並返回,所以這工作finder。 但是,如果我檢查rightA的值是錯誤的。 如果它需要的,這裏是我用來調用測驗的功能:
void gameOver(char field[HEIGHT][WIDTH], char newField[HEIGHT][WIDTH]){ // TODO
bool rightA = false;
showQuizDialog(rightA);
do{
system("cmd /c cls");
switch (rightA){
case true : cout << "menu"; menu(field, newField); break;
case false : showQuizDialog(rightA); break;
default : cout << " ";
}
}while(rightA == false);
}
我有點hintless。我可能有一些邏輯上的失敗,現在我只是看不到。 問候
E:我不想用代碼來炸你們。但這裏是:
bool showQuizDialog(bool rightA){
Quiz* quiz = Quiz::getInstance();
quiz -> askQuestion(rightA);
return rightA;
}
並全面askQuestion:
bool Quiz::askQuestion(bool rightA) {
int fragenID = rand() % this->fragen.size(); //zufällige Fragen auswählen
struct Question frage = this->fragen.at(fragenID);
std::cout << frage.frage.c_str() << std::endl << endl; //Frage stellen
int rightanswer = this->listAnswers(frage.antworten);
int answer = this->readAnswer(0, frage.antworten.size() - 1);
if (answer == rightanswer){
rightA = true;
}
else {
rightA = false;
}
return rightA;
}
爲什麼不顯示代碼?我們仍然猜測'showQuizDialog'是什麼? –
'return rightA;'確實意味着你返回答案,而不是改變參考參數。 – RichardPlunkett