【发布时间】:2015-01-27 23:32:57
【问题描述】:
我有一个函数,它只在 return 语句在 else 内时返回访问冲突读取位置错误,但当它在 else 之外时不会出现错误,但由于代码 I 有时我会得到相同的返回值不应该。这是代码:
void askUser(){
std::cout << "Level: ";
std::cin >> level;
for (int x = 0; x < 3; x++){
word = getWord(level);
std::cout << word << std::endl;
}
}
std::string getWord(int level){
int randomNumber = rand() % 3;
if (usedWords[0].find(line[level - 1][randomNumber]) != usedWords[0].end()){
getWord(level);
}
else{
usedWords[0].insert(line[level - 1][randomNumber]);
return line[level - 1][randomNumber]; //returns the access violation error
}
//if the return was here no access violation but can return previous return values which shouldn't happen
}
我不确定到底是什么导致了错误,但我认为这与 return 语句有关。
【问题讨论】:
-
这并不是真正的递归——它再次使用相同的参数调用自身;改变的只是随机数。
if也可以是while和新的rand()。 -
抱歉打错了,我试试看,谢谢@OllieFord
-
能否请您提及您使用的变量类型,如 line、usedWords 等?
标签: c++ access-violation