c++ - Can't access inner class member with outer class object -


#include <iostream>  class outer {     int o; public:     void setouter(int o)     {         this->o=o;     }     class inner     {     public:         int i;         int retouter(outer *obj)         {             return obj->o;         }     }; };  int main(int argc, char **argv) {     outer::inner obj;     obj.i=20;     std::cout<<"inner = "<<obj.i<<std::endl;      outer *obj1=new outer;     obj1->setouter(40);     std::cout<<"outer o = "<<obj.retouter(obj1)<<std::endl;      obj1->inner::i =50; //access inner class members outer class object! } 

everything in above code fine apart last line. why not able access inner class member outer class object? outer class object should have public member access of class outer , how behavior when create inner class object contained outer class!

inner class defined @ different scope. it's no different saying

class inner { public:     int i;     int retouter(outer *obj)     {         return obj->o;     } }; 

and then

inner::i =50 

which isn't possible because i isn't static.

declaring inner class doesn't automagically declare member of type outer class can access using syntax.

now, like:

class outer {     int o; public:     void setouter(int o)     {         this->o=o;     }     class inner     {     public:         int i;         int retouter(outer *obj)         {             return obj->o;         }     } innermember;     //    ^^^     // declare member };  int main(int argc, char **argv) {     outer *obj1=new outer;     obj1->innermember.i =50; //access inner class members outer class object! } 

would work.


Comments

Popular posts from this blog

ios - iPhone/iPad different view orientations in different views , and apple approval process -

java Extracting Zip file -

C# WinForm - loading screen -