C++ access private member in composition of two classes from base class -
since i'm newbie in c++, here goes!
i have base class (i'm not using inheritance anywhere) 2 objects 2 other classes. need have access private member other in class.
class base { private: myclass1 m1; myclass2 m2; public: base() {}; ~base() {}; }; class myclass1 { private: int m_member1; public: myclass1() {}; ~myclass1() {}; }; class myclass2 { private: int m_member2; public: myclass2() {}; ~myclass2() {}; int sum_members_because_yes(void) { return (myclass1::m_member1 + m_member2); //how can this??? } }; how can have access of m_member1 myclass1 in myclass2? :)
(i want avoid inheritance, because on code myclass1 , 2 not base class...)
thanks
there many ways it.
to allow access m_member1 @ all, make m_member1 public. or declare friend of myclass1, this:
class myclass1 { private: int m_member1; ... friend class base; }; or this:
class myclass1 { private: int m_member1; ... friend class myclass2; }; or this:
class myclass1 { private: int m_member1; ... friend class int myclass2::sum_members_because_yes(void); }; or give myclass1 public accessor:
class myclass1 { ... public: ... int get_m_member1() const { return(m_member_1); } }; then allow m2 reach m1, give m2 pointer m1:
class myclass2 { ... public: myclass1 *pm1; }; class base { ... public: base() { m2.pm1 = &m1; }; }; or relay value of m_member1 through base upon request of m2, answer getting long.
(and once you're comfortable of this, should take note sum_members_because_yes belongs in base.)
Comments
Post a Comment