【发布时间】:2011-02-24 22:03:59
【问题描述】:
我正在制作一个简单的命令行 Hangman 游戏。
void Hangman::printStatus()
{
cout << "Lives remaining: " << livesRemaining << endl;
cout << getFormattedAnswer() << endl;
}
string Hangman::getFormattedAnswer()
{
return getFormattedAnswerFrom(correctAnswer.begin(), correctAnswer.end());
}
string Hangman::getFormattedAnswerFrom(string::const_iterator begin, string::const_iterator end)
{
return begin == end? "" : displayChar(*begin) + getFormattedAnswerFrom(++begin, end);
}
char Hangman::displayChar(const char c)
{
return c;
}
(最终,我将更改此设置,以便 displayChar() 显示 - 或用户猜到的字符,但为简单起见,我现在只返回所有内容。)
当我从 VS 2010 构建并运行它时,我得到一个弹出框:
调试断言失败!
xstring 行:78
表达式:字符串迭代器不是 可解引用
我做错了什么?
【问题讨论】:
-
您能否在调试时尝试获取回溯,以确保您发布的代码会导致此行为?
-
您使用递归实现是否有特殊原因?迭代实现会更简单。
-
@James 是的,你是对的。我迭代地实现了它,现在它可以工作了。
-
当 begin == end - 1 时看起来像一个不一样的问题