C ++ access to a variable from a nested class method

How can I access a class attribute from my method of a nested class?

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

You can pass this to the inner class. For instance:

 class Class1 { public: Class1() : class2(this) { } int attribute; void Method1() { }; class Class2 { Class1 *parent; public: Class2(Class1 *parent) : parent(parent) { } void Method2() { // parent->attribute } } class2; }; 
+2
source

Below is one way to do this with minor changes to the OP code.

 #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(); } 

The code is also available at http://codepad.org/MUF3a8jL

+2
source

All Articles