我的程序在两个(理论上)连续的代码行之间出错,并且不知道是什么原因引起的。
我的整个代码很庞大,所以这是基础知识;
int playRoom(std::string currentRoom = "Storage_room", std::string entryDoor = "NULL"){
log("Starting playRoom()");
// code to play the level
// includes setting up box2d world
// and playing the level
if(playerWantsRestart){
log("Restart level");
return playRoom(savedData.roomName, savedData.entryDoor);
}
log("Leaving playRoom()");
return 0;
}
int main( int argc, char* args[] ){
// Set up SDL etc..
playRoom();
log("Back in main()");
// Close SDL
return 0;
}
如果我从不使用重启选项,一切都很好。 如果我使用它,程序将退出状态3,日志文件显示为:
Starting playRoom()
Restart level
Starting playRoom()
Leaving playRoom()
所以错误似乎在“返回0;”?我不认为状态3是溢出,并且它只是一次被递归(?),所以... 我正在使用Codeblocks 12.11,使用GNU GCC进行编译。任何帮助或想法都会很棒!
答案 0 :(得分:0)
int playRoom(std::string currentRoom = "Storage_room", std::string entryDoor = "NULL")
你为什么使用int?我会使用布尔值。
你正在调用两种不同类型的方法,不确定他们是否更新了java以包含这种语法糖。我已经离开了圈子但是。
playRoom();
此函数默认情况下方法中的方法应设置currentRoom和entryDoor。
然后用它重载。
playRoom(string currentRoom , string entryDoor);
答案 1 :(得分:0)
尝试从if条件中删除 return 语句。