编译器认为时间*操作数是一个指针

时间:2013-04-03 18:33:26

标签: objective-c

以下是错误行:

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;

然后没有编译错误,但是运行时错误:“线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x0)

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

您的实例变量是指向int s(int*)的指针,您的属性返回指向int的指针。您应该使实例变量为普通整数,并且属性应返回普通整数。