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