我可以使用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/

10-09 03:23