2011-03-19 96 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.