-(void)updateCharacterStatsForArmor:(RKArmor *)armor withWeapons:(RKWeapon *)weapon withHealthEffect:(int)healtheffect
{
if (armor != nil){
self.character.health = self.character.health - self.character.armor.health + armor.health;
self.character.armor = armor;
}
else if (weapon != nil){
// The problematic line:
self.character.damage = self.character.damage - self.character.weapon.damage + weapon.damage;
self.character.weapon = weapon;
}
else if (healtheffect != 0){
self.character.health = self.character.health + healtheffect;
}
else {
self.character.health = self.character.health + self.character.armor.health;
self.character.damage = *(self.character.damage + self.character.weapon.damage);
}
}
@end
带有错误的行标记在代码段中。错误显示invalid operand to binary expression int int*
。
最好重新启动整个事情吗?
答案 0 :(得分:0)
你可能已经定义了一个你用作int *而不是int的伤害属性。检查你的角色和武器类。我怀疑是self.character.damage。
答案 1 :(得分:0)
如果您指出的行确实存在问题,看起来您可能已声明字符类的damage
属性返回int *
而不是int
。很容易犯这个错误,因为指向对象的属性总是指针。但是,int
不是对象类型,因此通常不需要在属性中存储指向它的指针。
你说的问题是:
self.character.damage = self.character.damage - self.character.weapon.damage + weapon.damage;
但后来你有:
self.character.damage = *(self.character.damage + self.character.weapon.damage);
看起来这第二行是某种尝试避免编译器错误,但它似乎没有多大意义。如果你正在进行指针运算,你只会取消引用加法的结果,但这对于名为damage
的属性没有多大意义。
要解决所有这些问题,请查看您的字符类声明。你可能会看到类似的东西:
@property(...) int *damage;
删除*
并确保属性为assign
,如下所示:
@property(assign) int damage;
此外,还不清楚海盗是如何参与的。也许你们在makin'yer query中一直是个匆忙的匆忙? Arrr!