0

我的程序在两行(理论上)连续的代码之间出现错误,并且不知道是什么原因造成的。

我的整个代码很大,所以这里是基础;

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()

所以错误似乎在“return 0;”中??我不认为状态 3 是溢出,而且它只会递归(?)一次,所以......我使用的是 Codeblocks 12.11,用 GNU GCC 编译。任何帮助或想法都会很棒!

4

2 回答 2

0
int playRoom(std::string currentRoom = "Storage_room", std::string entryDoor = "NULL")

你为什么用int?我会使用布尔值。

无论哪种方式阅读此。

您正在调用两种不同类型的方法,不确定它们是否更新了 java 以包含此语法糖。我已经脱离了循环,但是。

playRoom();

默认情况下,该函数在方法中应该有一个 set currentRoom 和一个 entryDoor 。

然后重载它。

playRoom(string currentRoom , string entryDoor);
于 2013-09-06T20:01:05.430 回答
0

尝试从 if 条件中删除return语句。

于 2013-12-10T15:08:29.373 回答