我有变量mode
,我用以下行声明:
StatusRecord mode;
StatusRecord
是一个struct
,它包含多个不同类型的变量。
我现在想要创建一个指向mode
的指针,并使用一个函数填充其属性/字段,用一些数据填充该指针。我尝试过这样做:
StatusRecord mode;
StatusRecord *modePtr = &mode;
DataStore->getModeData(*modePtr);
在这里,我声明struct
变量,创建指向它的指针,并使用getModeData()
函数填充该指针。但是,我现在想要在条件语句中使用struct ptr
的一个属性:
if(*modePtr->eraseSelect ==2){
...
}
但是我在这一行上遇到编译错误:
错误:'*'的操作数必须是指针
这是否意味着eraseSelect
属性应该是指针以及'modePtr`?我该如何解决这个错误?
答案 0 :(得分:6)
试试这个:
if(modePtr->eraseSelect ==2){
...
}
或者这个:
if((*modePtr).eraseSelect ==2){
...
}
所以你可以使用" dot"用于访问实例字段的语法或" arrow"到达实例指针字段的语法。在大多数情况下," arrow"更合适。
答案 1 :(得分:5)
你不需要在这里取消引用你的指针:
if(modePtr->eraseSelect ==2){
...
}
答案 2 :(得分:3)
问题出在*modePtr->eraseSelect
。
->
用于访问指向对象的指针的成员变量。因此,ptr->someMember
相当于*(ptr).someMember
。你混淆了两个,所以当你解除引用两次时它没有意义。
您应该改为使用modePtr->eraseSelect
。