[gnu.g++.bug] more serious bug: inaccessible indirect public member

eppstein@garfield (David Eppstein) (05/07/89)

If one class is derived (not publically) from a second class, the
derived class can still use the parent's public members.

But if the parent class is itself derived (publically), g++ screws up:
it disallows access to the grandparent's public members, which should
have been inherited from the parent.

    ------------ code illustrating the bug ------------
class a { public: int foo(); };
class b : public a { public: int baz(); };
class c : b { int bar() { return foo() + baz(); }; };

    ------------ g++ output when run on sample ------------
g++ version 1.32.0
 /usr/local/gnu/lib/gcc-cpp -+ -v -undef -D__GNU__ -D__GNUG__ -Dvax -Dunix test.c /tmp/cc026645.cpp
GNU CPP version 1.33
 /usr/local/gnu/lib/gcc-c++ /tmp/cc026645.cpp -quiet -dumpbase test.c -version -o /tmp/cc026645.s
GNU C++ version 1.32.0 (vax) compiled by GNU C version 1.33.
In function c::bar ():
test.c:1: method int a::foo () is private
-- 
David Eppstein  eppstein@garfield.cs.columbia.edu  Columbia U. Computer Science