指向静态类成员

时间:2011-03-19 13:44:00

标签: c++ visual-c++ c++11

class A
{
static int x;
};

如何使用指向成员的指针获取x的地址?

2 个答案:

答案 0 :(得分:5)

因为它是静态的,所以应该是这种语法:

int *px = &A::x;  //x is static member

对于非静态成员,这是语法:

 int A::*py = &A::y; //y is non-static member

示例:

struct A
{
  static int x;
  int y;
};

int A::x=100;

int main() {
        int *px = &A::x;
        int A::*py = &A::y;

        A a;
        a.y = 200;

        cout << *px << endl;   //used just like normal pointers
        cout << a.*py << endl; //note how the pointer-to-member is used!
        cout << a.y << endl;   //a.*py and a.y are equivalent!
        return 0;
}

输出:

100
200
200

演示:http://ideone.com/0xSdW

请注意指向静态成员的指针与指向非静态成员的指针之间的区别,以及它们的使用方式!

答案 1 :(得分:0)

您可以使用&amp; A :: x 。但请记住将变量标记为公共变量,并且该类的所有实例都只有一个X.