Objective-C编译错误:二进制表达式的操作数无效

时间:2015-02-06 15:03:55

标签: objective-c

-(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*

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

2 个答案:

答案 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!