使用指针访问对象的成员
c++ Accessing members of objects using pointers
我有变量mode
,我用下面的行声明:
StatusRecord mode;
StatusRecord
是一个包含多个不同类型变量的struct
。
我现在想创建一个指向mode
的指针,并通过使用函数填充其属性/字段来填充该指针的一些数据。我试过这样做:
StatusRecord mode;
StatusRecord *modePtr = &mode;
DataStore->getModeData(*modePtr);
在这里,我声明了struct
变量,创建了一个指向它的指针,并使用getModeData()
函数填充该指针。但是,我现在想使用刚刚在条件语句中填充的struct ptr
的一个属性:
if(*modePtr->eraseSelect ==2){
...
}
但是我在这一行得到一个编译错误,上面写着:
错误:'*'的操作数必须是指针
这是否意味着eraseSelect
属性应该是一个指针以及'modePtr ' ?我该如何修复这个错误?
试试这个:
if(modePtr->eraseSelect ==2){
...
}
或:
if((*modePtr).eraseSelect ==2){
...
}
所以你可以用"点"语法到达实例的字段,或者用"箭头"语法到达指向实例的指针的字段。大多数情况下,"arrow"更合适。
你不需要在这里取消对指针的引用:
if(modePtr->eraseSelect ==2){
...
}
问题在*modePtr->eraseSelect
。
->
用于访问对象指针的成员变量。因此,ptr->someMember
等价于*(ptr).someMember
。你把两者混淆了,所以它没有意义,因为你解引用了两次。
你应该用modePtr->eraseSelect
代替。
相关文章:
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 在运行时有条件地删除类成员或跳过调用该成员对象的构造函数
- C++是否有定义的方法来传递指向类的成员对象的成员函数的指针
- (2 问题)"类"类型重新定义(即使 #pragma 一次),以及静态函数内的静态成员对象初始化?
- 声明成员对象而不调用其默认构造函数
- 指向成员对象的指针 - 中断线程
- 是否有更好的方法来封装成员对象可以访问的共享存储池?
- 应该在成员对象上调用析构函数
- 调用成员对象的构造函数
- 将 const 类型引用对象注册为类成员对象C++
- 修改类 c++ 中的成员对象
- 从成员对象调用方法
- 从对象调用成员对象,错误:引用非常量值的初始值必须是左值
- 构造函数,成员对象
- 不能使外部类成为内部类内的成员对象
- 使用从另一个类继承的类的对象初始化成员对象
- 如何避免需要在初始化列表中初始化成员对象
- 初始化具有参数的类成员对象的正确方法
- 将指针添加到成员对象中的指针动态阵列
- C 将成员对象函数分配给类成员功能