2013-02-09 73 views
0

有人可以解釋int Aint Bvoid func()void func1()的範圍嗎?帶結構的嵌套類的範圍

class C { 
    struct S { 
    int A; 
    }; 

    int B 

public : 
    void func(){ 
    } 
    void func1(){ 
    } 
}; 

回答

1

不知道我完全理解你的要求,但如果我這樣做,我會盡力回答。

功能func()func1()C的成員函數,因此它們在此處具有完全相同的名稱。作爲成員變量C的變量B可以直接引用func()func1(),而不用任何名稱空間限定它。

在另一方面變量A,作爲一個公共的,非靜態成員的S,需要前第一實例S類型的對象變量被訪問,就像這樣:

void func() 
{ 
    S s; 
    B = 0; // Directly accessible, member variable of `C` 
    s.A = B; // A is a non-static member variable of `S`, requires an object 
    A == 3; // ERROR! A is not a member variable of C 
}