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
Post a Comment