2013-02-09 86 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 
}