1

这是错误所在的行:

player.legalMoney = ((player.wealth * 3000) + arc4random() % (player.luck * 1000)) / difficulty;

我在行中的两个 * 上都收到错误“二进制表达式('int *'和'int')的无效操作数。

这是接口部分:

{
    int *legalMoney, *wealth, *luck;
}

@property (nonatomic, strong) *legalMoney, *wealth, *luck;

我认为问题是编译器认为 * 是一个指针,所以如果我将其更改为:

player.legalMoney = ((*player.wealth * 3000) + arc4random() % (*player.luck * 1000)) / difficulty;

那么没有编译错误,而是运行时错误:“Thread 1:EXC_BAD_ACCESS (code=2, address=0x0)

4

2 回答 2

2

您正在尝试将指针与数字相乘。您应该取消引用指针以获取它们的值,因此您的第二个示例是正确的。

player.wealth返回指向保存 int 的内存位置的指针,该值 *player.wealth返回存储在内存位置的实际值

但是您真正的问题是您声明指向整数而不是整数值的指针,这可能不是您的本意。它应该声明为:

{
    int legalMoney, wealth, luck;
}

@property (nonatomic, assign) int legalMoney;
@property (nonatomic, assign) int wealth;
@property (nonatomic, assign) int luck;

然后你可以使用你的原始代码:

player.legalMoney = ((player.wealth * 3000) 
                         + arc4random() % (player.luck * 1000)) / difficulty;
于 2013-04-03T18:35:53.557 回答
1

您的实例变量是指向ints ( int*) 的指针,而您的属性返回一个指向 int 的指针。您应该将实例变量设为纯整数,并且属性应返回纯整数。

于 2013-04-03T18:38:51.920 回答