以下是错误行:
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)
答案 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的指针。您应该使实例变量为普通整数,并且属性应返回普通整数。