带有结构的嵌套类的范围

时间:2013-02-09 12:53:05

标签: c++ class scope

有人可以在int Aint B中解释void func()void func1()的范围吗?

class C {
  struct S {
    int A;
  };

  int B

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

1 个答案:

答案 0 :(得分:1)

我不确定我完全明白你的要求,但如果我这样做,我会尽力回答。

函数func()func1()C的成员函数,因此它们在此处具有完全相同名称的相同访问权限。作为B的成员变量的变量C可以直接引用func()func1(),而不用任何命名空间限定它。

另一方面,变量AS的公共非静态成员变量,需要在访问之前首先实例化S类型的对象,如下所示: / p>

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
}