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

포인터를 멤버로 사용하여 x의 주소를 얻는 방법은 무엇입니까?정적 클래스 멤버를 가리키는 것

+0

x는 회원이 아닙니다. 그렇게 할 수는 없습니다. 인스턴스의 멤버는이 포인터를 사용하여 액세스해야합니다. 정적 멤버에는 이러한 개념이 없습니다. –

답변

5

,이 구문 같아야

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; 
} 
비 정적 부재

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

, 이는 구문

출력 :

100 
200 
200 

데모 : http://ideone.com/0xSdW

참고 비 정적 멤버 정적 멤버, 그리고 포인터 포인터의 차이점, 그리고 그들이 어떻게 사용하고 있습니다!

0

& A :: x을 사용할 수 있습니다. 그러나 변수를 public으로 표시하고 클래스의 모든 인스턴스에 단 하나의 X가 있음을 기억하십시오. 이 정적 이래로

관련 문제