0

发生了一些非常奇怪的事情:当我调用 foo(100*1.0f) 时,沿线某处变成了 0。为了验证我在 foo() 上设置了一个断点,它确实是零并且它确实被调用了 100*1.0 F。代码在 Obj-C++ 中。

这里是 XCode 的 GDB 前端的调用函数,可以看到 score*scoreMultiplier 为 100。 调用函数 http://img341.imageshack.us/img341/1109/screenshot20100502at135.png

void JNPP1PGameController::addScoreToPlayer(NSInteger score) {
    if(!gameOver){
        JNLogString(@"Adding score(%d*%f) to player", score, scoreMultiplier);
        [player addScore: score*scoreMultiplier];
        [wrapper setShouldNotify];
        [wrapper notify];
    } else {
        JNLogString(@"Not adding score(%d*%f) because GAME IS OVAR", score, scoreMultiplier);
    }
}

这是 XCode 的 GDB 前端中的被调用函数,这里 _score 为 0。 被调用函数 http://img156.imageshack.us/img156/1109/screenshot20100502at135.png

- (void) addScore:(NSInteger) _score {
    score += _score;
    JNLogString(@"Player can has %d points.. HURRAY!!!", score);
}
4

1 回答 1

0

通过将调用代码更改为以下代码来修复代码:

void JNPP1PGameController::addScoreToPlayer(NSInteger score) {
    if(!gameOver){
        JNLogString(@"Adding score(%d*%f) to player", score, scoreMultiplier);
        NSInteger _score = score*scoreMultiplier;
        JNLogString(@"This is the case: %d", _score);
        [player addScore: _score];
        [wrapper setShouldNotify];
        [wrapper notify];
    } else {
        JNLogString(@"Not adding score(%d*%f) because GAME IS OVAR", score, scoreMultiplier);
    }
}

我假设现在转换为未定义的(我收到“未找到方法”警告)参数类型出了点问题。

于 2010-05-02T12:51:11.643 回答