2015-02-06 87 views
-4
-(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*Objective-C编译错误:对二进制表达式无效的操作数

会最好重新启动整个事情?

+3

什么是RKArmor,RKWeapon,如何定义他们的'损害'属性?最后一行有一个'*',那么为什么你的问题没有包含它?它似乎不是逻辑。 – Larme 2015-02-06 15:06:46

+0

这是我的RKArmor和RKWeapon是我的装甲和武器类,我不知道它为什么不起作用 – 2015-02-06 15:32:17

+0

我猜,但你应该显示他们的代码,至少他们每个人是如何定义'damage' 。 – Larme 2015-02-06 15:33:35

回答

0

你可能定义了一个你用作int *而不是int的伤害属性。检查你的角色和武器类。我怀疑self.character.damage。

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; 

此外,海盗如何参与目前还不清楚。也许你们在匆忙的询问中一直很匆忙? Arrr!

+0

怎么做,所以它以后不会变成self.character.damage = *(self.character.damage + self.character.weapon.damage); ? – 2015-02-06 15:43:25

+0

我在udemy学习,这是一个海盗游戏,但我把它变成了一个不同的主题 – 2015-02-06 15:53:32

+0

增加了一点关于如何修复。如果可行,请查看关于属性的文档,并确保您了解对象和“int”之间的差异,并且您明白该修补程序有帮助的原因。 – Caleb 2015-02-06 15:58:09

相关问题