我可以使用pTest
将*pTest = 100;
点的值更改为:
int main() {
int *pTest = new int;
*pTest = 100;
cout << " Value of pTest " << *pTest;
}
但是我无法使用
*pCurrPtr->m_Data = 1;
更改该对象的数据成员:class CNode {
public:
int m_Data;
CNode *m_pLinkedList;
};
int main() {
CNode *pHeadPtr, *pCurrPtr, *pTailPtr, *pDeleteThisNode;
pCurrPtr = new CNode;
pCurrPtr->m_Data = 1;//won't compile with *pCurrPtr->m_Data = 1;
cout << "data is " << pCurrPtr->m_Data;
}
为什么会这样呢?
最佳答案
当您使用*pCurrPtr->m_Data
时,它等于*(pCurrPtr->m_Data)
,这意味着您正在尝试取消引用m_Data
成员。而且m_Data
不是指针,因此无法取消引用。
如果要取消引用已经使用“箭头”运算符pCurrPtr
完成的(实际)指针->
:pCurrPtr->m_Data
等于(*pCurrPtr).m_Data
。
关于c++ - 通过指向该对象的指针更改对象数据成员的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54254630/