2011-04-14 5 views
1
struct stVitals      // Entity vitals 
{ 
    int str; 
    int xp; 
    int batk; 
}; 

int doAttack(stVitals Aggressor, stVitals Defender) // Calculate attack results 
{ 
    doHit(getATK(Aggressor), getDEF(Defender), getDDG(Defender), getLVL(Aggressor), getLVL(Defender)); 
} 

int doHit([...]      // Calculate damage 

int getATK(stVitals sourcemob)  // Calculate attack value 
{ 
    int output = ((sourcemob.str * getLVL(sourcemob.xp)) * 0.1) + sourcemob.batk; 
    return output; 
} 

int getLVL(int xp)     // Return level from XP 
{ 
    return (xp * 0.001); 
} 

donne l'erreur suivante:Apparemment incapable de travailler avec ints dans struct

ERROR: Conversion from 'int' to non-scalar type 'stVitals' requested 

Je travaille avec ints dans différentes instances stVital autour de mon programme de cette manière sans problème ... ce qui se passe ici que j'ai manqué?

edit: Il est braillements de la première ligne à l'intérieur de getATK

+0

Pouvez-vous poster la ligne exacte qui correspond à l'erreur. Le code que vous avez posté semble correct (à l'exception du double '0.1' qui multiplie une valeur entière puis converti - implicitement? - en un' int'). –

+1

Je parie que vous avez oublié de faire un opérateur d'accès membre pour obtenir l'une des variables membres de votre structure; oh, et votre compilateur devrait crier à propos du numéro de ligne ......... –

+0

edit: Il hurle sur la première ligne à l'intérieur de getATK (le truc int/double est bien, car il produit la plage de nombres particulière Je cherche en isolation) – motioneffector

Répondre

0

Ce qui manque ici est le code que vous appelez getATK. Vraisemblablement, vous passez incorrectement un argument int plutôt qu'un argument stVitals lorsque vous appelez cette fonction.

+0

Amended - Je ne suis pas :( – motioneffector

+1

Vous appelez getLVL reçoit l'objet stVitals' Aggressor', mais –

+0

Oh, merci, c'est toujours le plus petit truc qui est le plus difficile à repérer ... J'ai laissé tomber le ".xp" – motioneffector

0

getLvl est appelé avec un stVitals par doAttack();

Questions connexes