4

ネストされたクラスメソッドからクラス属性にアクセスするにはどうすればよいですか?

class Class1
{
public:
    int attribute;
    void Method1() { 
        class Class2
        {
            public:
               void Method2() { 
                   //here I need to access attribute from Class1
               }
        };
    }
};
4

2 に答える 2

2

以下は、OP のコードに小さな変更を加えてそれを行う 1 つの方法です。

#include <cassert>

class Class1
{
    public:
        Class1( int attribute ) : attribute_( attribute ) {
        }
        void Method1() { 
            class Class2
            {
                public:
                    Class2( Class1 * parent ) : parent_( parent ) {
                    }
                    int parentAttribute() const { 
                        return parent_->attribute_;
                    }
                private:
                    Class1 * parent_;
            };
            Class2 c2( this );
            assert( c2.parentAttribute() == attribute_ );
        }
    private:
        int attribute_;
};

int main() {
    Class1 c1( 42 );;
    c1.Method1();
}

コードはhttp://codepad.org/MUF3a8jLにも掲載されています。

于 2013-04-08T19:06:42.460 に答える