为什么点运算符的这种用法是非法的

问题描述 投票:0回答:1
#include<iostream>
using namespace std;
class A{
    public:
    int a;
    int* p=&a;
};
int main()
{
    A obj;
    obj.*p=10;
    cout<<obj.a;

return 0;
}

我很困惑。为什么“obj.*p=10”行非法? 我认为*p可以代替a,也就是说obj.*p等价于obj.a.

c++ class pointers
1个回答
0
投票

成员

p
的类型是
int*
而不是
int (C::*)
。这意味着您不能在这里使用指向成员语法的指针,而应该使用我们用来取消引用普通指针的普通语法。

*(obj.p)=10;
© www.soinside.com 2019 - 2024. All rights reserved.