Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C++
Hi All,
 
In one of the famous book called Thinking in C++, in one of the example Bruce Eckel made nested class as friend like,
 
class upper
{
private:
int i;
 
class nested;// forward declaration  

friend nested;
 
class nested
{
public:
uppder obj;
void SomeFunction()
{
cout<< obj.i; 
}
};
 
};
 
I used above code without using friend to nested class and worked correctly. So what should be the conclusion, does nested class should be declared as friend for accessing private data of outer class or it can directly access it without friend keyword.
Posted 30-Mar-12 18:48pm

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

A nice question in this section after long time.
 
Pranit, Bruce Eckel gave this statement as it is true based on the 1998 C++ draft. Now if you are using any compiler say MSVC 6.0 then you will get error if you haven't made your nested class friend class.
 
However a latter draft corrected this and stated that
"A nested class is a member and as such has the same access rights as any other member",
so if you use any compiler shipped with this modification then the use of 'friend' is no longer needed
  Permalink  
Comments
Pranit Kothari at 31-Mar-12 2:57am
   
Thanks for your nice words and answer. 5!

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 470
1 mhegazy94 460
2 Ravi Bhavnani 190
3 Kornfeld Eliyahu Peter 185
4 Shemeemsha RA 160
0 Sergey Alexandrovich Kryukov 7,135
1 OriginalGriff 6,801
2 CPallini 5,350
3 George Jonsson 3,619
4 Gihan Liyanage 2,797


Advertise | Privacy | Mobile
Web02 | 2.8.140922.1 | Last Updated 31 Mar 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100