2010-05-02 5 views
0

Quelque chose de vraiment bizarre se produit: quand j'appelle foo (100 * 1.0f), quelque part le long de la ligne qui devient 0. Pour vérifier je mets un point d'arrêt sur foo(), et c'est en effet zéro et est en effet appelé avec 100 * 1.0f. Le code est en Obj-C++.Paramètre devenant nul quelque part

est ici la fonction appelante dans le frontend GDB de XCode, comme vous pouvez le voir, le score * scoreMultiplier est 100. Calling Function 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); 
    } 
} 

Et est ici la fonction appelée dans le frontend GDB de XCode, ici _SCORE est 0. Called Function http://img156.imageshack.us/img156/1109/screenshot20100502at135.png

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

Marquer une question "mystère" ne vous aidera pas à obtenir des vues ou des réponses. À l'avenir, essayez de baliser les questions correctement. – Oded

+1

code s'il vous plaît ... – swegi

+0

Désolé Oded, je ne pouvais pas trouver les étiquettes populaires pour les assortir. Merci de les avoir ajoutés. – Nick

Répondre

0

le code a été corrigé en modifiant le code appelant à ceci:

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

Je suppose que quelque chose s'est mal passé lors de la conversion d'un type de paramètre indéfini (j'ai reçu un avertissement "méthode non trouvée").

Questions connexes