🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.g++.bug
Article #136

virtual base causes spurned friendship

#136
From: A.R.Runnalls
Date: Wed, 22 Jul 1992 16:27
40 lines
1682 bytes
In the following program, the compiler fails to recognise LVR::LVR() as
a friend of class L.  The problem goes away if the word `virtual' is removed.

(Environment: g++ 2.2.2 on a sparc running SunOS 4)

Script started on Wed Jul 22 17:23:56 1992
friendbug% cat friendbug.cc
// friendbug.cc

class LVR;

class L {
private:
    int foo;

    friend LVR::LVR();
};

class R {};

class LVR : public L, virtual public R {
public:
    LVR()  {foo = 0;}
};



friendbug% g_  g++ -c -g -v -Wall !$
g++ -c -g -v -Wall friendbug.cc
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-sunos4.1/2.2.2/specs
gcc version 2.2.2
 /usr/local/lib/gcc-lib/sparc-sun-sunos4.1/2.2.2/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ -D__sparc -D__sun -D__unix -g -Wall friendbug.cc /usr/tmp/cca25131.i
GNU CPP version 2.2.2 (sparc)
 /usr/local/lib/gcc-lib/sparc-sun-sunos4.1/2.2.2/cc1plus /usr/tmp/cca25131.i -quiet -dumpbase friendbug.cc -g -Wall -version -o /usr/tmp/cca25131.s
GNU C++ version 2.2.2 (sparc) compiled by GNU C version 2.2.2.
friendbug.cc: In method `LVR::LVR ()':
friendbug.cc:16: member `foo' is private
friendbug% exit
friendbug% 
script done on Wed Jul 22 17:24:39 1992
Technical Details
Message-ID: <929@rowan.ukc.ac.uk>
Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!ukc.ac.UK!arr

Show Full Headers
Complete Article Headers
Newsgroups: gnu.g++.bug
Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!ukc.ac.UK!arr
From: arr@ukc.ac.UK (A.R.Runnalls)
Subject: virtual base causes spurned friendship
Message-ID: <929@rowan.ukc.ac.uk>
Sender: gnulists@ai.mit.edu
Organization: Computing Lab, University of Kent at Canterbury, UK.
Distribution: gnu
Date: Wed, 22 Jul 1992 16:27:18 GMT
Approved: bug-g++@prep.ai.mit.edu
Lines: 41