Параметр где-то становится равным нулю - PullRequest
0 голосов
/ 02 мая 2010

Происходит что-то действительно странное: когда я вызываю foo (100 * 1.0f), где-то вдоль линии, которая становится 0. Для проверки я ставлю точку останова на foo (), и она действительно равна нулю, и она действительно вызывается с 100 * 1.0f. Код находится в Obj-C ++.

Вот вызывающая функция во внешнем интерфейсе GCB XCode, как вы можете видеть, 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);
    }
}

А вот вызываемая функция во внешнем интерфейсе GCB XCode, здесь _score равно 0. Вызываемая функция http://img156.imageshack.us/img156/1109/screenshot20100502at135.png

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

1 Ответ

0 голосов
/ 02 мая 2010

Код был исправлен путем изменения вызывающего кода на это:

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);
    }
}

Полагаю, теперь что-то пошло не так с приведением к неопределенному (я получил предупреждение «метод не найден») типу параметра.

...