【发布时间】:2013-12-29 05:13:59
【问题描述】:
我实现了一个测验代码,并在其末尾做了一个简短的更改,以检查用户是否正确回答。
我的 if / else 看起来像这样:
if (answer == rightanswer){
rightA = true;
}
else {
rightA = false;
}
return rightA;
我已经用调试器检查过,如果输入了正确的答案,它会转到 rightA = true;并返回,所以这很有效。 但如果我检查 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);
}
我有点不知所措。我可能有一些逻辑错误,我现在看不到。 问候
E:我不想用代码轰炸你们。但就是这样:
bool showQuizDialog(bool rightA){
Quiz* quiz = Quiz::getInstance();
quiz -> askQuestion(rightA);
return rightA;
}
以及完整的问题:
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;确实暗示您返回答案,而不是更改参考参数。