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