从嵌套类的函数访问父类的非静态成员

42c*_*kes 4 c++ access-modifiers nested-class

我试图在论坛中窥探一个类似的问题,这可能会帮助我取得成功.

我的C++程序中有一个嵌套类.我试图从嵌套类中的函数访问父类的变量,但我遇到以下错误

ERROR: A non static member reference must be relative to a specific object
Run Code Online (Sandbox Code Playgroud)

我试图访问的变量受到保护,嵌套类是公共的(它的功能也是如此)

以下是描述(或努力)该场景的代码片段

头文件

class A
{
    protected:
        D x;

    public:

        int func1(int a);

        class B : protected C
        {
            int func2(int a);   
        }
}   
Run Code Online (Sandbox Code Playgroud)

CPP文件

int A::func1(int a)
{
    x = 5;
    B z;
    int b = z.func2(a);
}

int A::B::func2(int a)
{
    int c = x.getValue(a);      /* ERROR: A non static member reference 
                                   must be relative to a specific object */
}
Run Code Online (Sandbox Code Playgroud)

从某个地方

A anObject;
anObject.func1(7);
Run Code Online (Sandbox Code Playgroud)

如果重要的话,getValue()是一个公共函数.因为我通过一个对象调用A的函数,并且通过那个B的函数,如果没有链接到那个对象并让我访问那个非静态成员?

Man*_*726 7

C++ 内部类与Java嵌套类不同.另一个内部没有任何对象.它们只是名称空间是另一个类的类,如Java静态内部类.

您无权访问该成员,x因为它属于A一个完全不相关的类,它没有任何内容(继承,复合等)B.