我有一个函数只返回一个访问冲突读取位置错误当return语句在else中但是当它在else之外没有错误被转动但是我有时得到相同的返回值由于代码我不应该。这是代码:
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语句有关。
答案 0 :(得分:3)
问题是当if
语句中的条件为真时,您没有返回任何内容。函数说你应该返回一个字符串,但是你只是到了函数的末尾。未定义的行为。