2011-03-19 94 views
1
class A 
{ 
static int x; 
}; 

如何使用指向成员的地址获得x的地址?指向静态类成员

+0

x不是会员。所以你不能。实例的成员需要使用该指针来访问它。静态成员没有这样的概念。 – 2011-03-19 16:03:55

回答

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

注意指针之间的差异,静态成员,并指向非静态成员,以及如何使用它们!

0

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