c ++使用指针访问对象的成员

时间:2015-09-09 09:44:14

标签: c++ pointers struct

我有变量mode,我用以下行声明:

StatusRecord mode;

StatusRecord是一个struct,它包含多个不同类型的变量。

我现在想要创建一个指向mode的指针,并使用一个函数填充其属性/字段,用一些数据填充该指针。我尝试过这样做:

StatusRecord mode;
StatusRecord *modePtr = &mode;
DataStore->getModeData(*modePtr);

在这里,我声明struct变量,创建指向它的指针,并使用getModeData()函数填充该指针。但是,我现在想要在条件语句中使用struct ptr的一个属性:

if(*modePtr->eraseSelect ==2){
    ...
}

但是我在这一行上遇到编译错误:

  

错误:'*'的操作数必须是指针

这是否意味着eraseSelect属性应该是指针以及'modePtr`?我该如何解决这个错误?

3 个答案:

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