Does a subclass inherit, the main class\' friend associations (both the main class\' own and other classes friended with the main class)?
Or to put it differently, h
You can create (static) protected methods in the parent that will allow you to do things like that.
class MyFreind
{
private:
int m_member;
friend class Father;
};
class Father
{
protected:
static int& getMyFreindMember(MyFreind& io_freind) { return io_freind.m_member; }
};
class Son : public Father
{
public:
void doSomething(MyFriend& io_freind)
{
int& friendMember = getMyFreindMember(io_freind);
// ....
} // ()
};
This however bypasses encapsulation so you probably should take a second look at your design.
The answer is very simple: no, subclasses do not inherit friend associations. A friend can only access the private members of the class the association is declared in, not those of parents and/or children of that class. Although you might be access protected member of a superclass, but I'm not sure about that.
Friendship is not inherited in C++.
The standard says (ISO/IEC 14882:2003, section 11.4.8):
Friendship is neither inherited nor transitive.
friend only applies to the class you explicitly make it friend and no other class.
http://www.parashift.com/c++-faq-lite/friends.html#faq-14.4