Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Re: g++ 4: Unrecognised Friendship [REPOST/CROSS-POST]

Thread Tools

Re: g++ 4: Unrecognised Friendship [REPOST/CROSS-POST]

red floyd
Posts: n/a
JH Trauntvein wrote:
> red floyd wrote:
>>JH Trauntvein wrote:
>>>Consider the following example:
>>>namespace n1
>>> class cn1_base;
>>> namespace n1_helpers
>>> {
>>> class helper1
>>> {
>>> private:
>>> int private_member;
>>> friend class cn1_base;
>>> };
>>> };
>>> class cn1_base
>>> {
>>> public:
>>> void foo()
>>> {
>>> n1_helpers::helper1 helper;
>>> helper.private_member = 1;
>>> }
>>> };
>>>While this compiled with earlier versions of G++, G++ version 4.x fails
>>>to compile this and gives the following message:
>>> 'int n1::n1_helpers::helper1:rivate_member' is prviate within this
>>> context
>>>Fortunately, I can work around this by changing the friend declaration
>>>to the following:
>>> friend class n1::n1_base;
>>>Is this a bug in the compiler or have I misunderstood something about
>>>friendship declarations?

>>See Standard paragrah, subparagraph 3. "If a friend declaration
>>in a non-local class first declares a class or function, the friend
>>class or function is a member of the innermost enclosing namespace."
>>Sounds to me like it was a bug in earlier g++ versions.

> It seems to me that the key here is in the phrase, "first declares a
> class or function". The sample code that I provided had a forward
> declaration of the class in the appropriate namespace that the
> friendship declaration should have used.

I am reposting this with a cross-post to comp.lang.c++, because this is
not just a compiler issue, but a language issue.

I believe that in this case, the friend declaration is in fact the first
declaration of n1_base, and that therefore applies.

Reply With Quote

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
Bad or unrecognised image header. Digital Photography 1 12-08-2005 04:16 PM
Bad or unrecognised image header. Iceman Digital Photography 0 12-08-2005 02:39 AM
G++ 4: Unrecognised Friendship JH Trauntvein C++ 4 08-10-2005 04:10 PM
Help - Unrecognised drive Richard Webb Windows 64bit 3 05-17-2005 09:38 AM
Help with unrecognised files Mike Day DVD Video 0 03-28-2005 01:10 PM