#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.
成员
p
的类型是 int*
而不是 int (C::*)
。这意味着您不能在这里使用指向成员语法的指针,而应该使用我们用来取消引用普通指针的普通语法。
*(obj.p)=10;