Q
Qi
Below code, indeed I found here,
http://bytes.com/topic/c/answers/523273-inner-classes-friend
I changed it a bit to make it compilable and simpler.
The code can be compiled on both VC 2008 Express and GCC 4.5.2
That implies that
"An inner class can inherit its outer class' friendship".
My question is if that implication correct?
I doubt that because,
1, The link I showed above seems approved that's wrong.
Though that was posted in 2006.
2, As far as I understand, a derived class doesn't inherit
its base class' friendship. B is F's friend, D is derived from
B, D is not F's friend by default. (am I correct?)
Can any one give some summary on the friendship inheritance
of inner and outer classes, base and derived classes that defined
by the standard?
Thanks
===CODE===
class Node {
private:
int value;
friend class Graph;
};
class Graph {
private:
class cmp {
public:
int operator()(const Node &l, const Node &r) {
return (l.value - r.value); // without that friend, this
line can't compile
}
};
};
http://bytes.com/topic/c/answers/523273-inner-classes-friend
I changed it a bit to make it compilable and simpler.
The code can be compiled on both VC 2008 Express and GCC 4.5.2
That implies that
"An inner class can inherit its outer class' friendship".
My question is if that implication correct?
I doubt that because,
1, The link I showed above seems approved that's wrong.
Though that was posted in 2006.
2, As far as I understand, a derived class doesn't inherit
its base class' friendship. B is F's friend, D is derived from
B, D is not F's friend by default. (am I correct?)
Can any one give some summary on the friendship inheritance
of inner and outer classes, base and derived classes that defined
by the standard?
Thanks
===CODE===
class Node {
private:
int value;
friend class Graph;
};
class Graph {
private:
class cmp {
public:
int operator()(const Node &l, const Node &r) {
return (l.value - r.value); // without that friend, this
line can't compile
}
};
};