access denied to a protected member of a virtual base class
turlais@mahler
turlais@mahler
Thu Oct 9 05:48:00 GMT 1997
I dont know if it is a bug. A protected method of a virtual base
class cannot be call in the derived base class if the base class is
not a direct parent. Not a blocking problem.
thanks
Pierre TURLAIS
verdi 53- /usr/tmp/test/bin/gcc -v vb.cc
Reading specs from /usr/tmp/test/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.12/s
pecs
gcc version egcs-2.90.12 971008 (gcc2-970802 experimental)
/usr/tmp/test/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.12/cpp -lang-c++ -v -u
ndef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=90 -Dsun -Dsparc -
Dunix -D__svr4__ -D__SVR4 -D__GCC_NEW_VARARGS__ -D__sun__ -D__sparc__ -D__unix__
-D__svr4__ -D__SVR4 -D__GCC_NEW_VARARGS__ -D__sun -D__sparc -D__unix -Asystem(u
nix) -Asystem(svr4) -Acpu(sparc) -Amachine(sparc) -D__EXCEPTIONS vb.cc /var/tmp/
cca0078i.ii
GNU CPP version egcs-2.90.12 971008 (gcc2-970802 experimental) (sparc)
#include "..." search starts here:
#include <...> search starts here:
/usr/tmp/test/include/g++
/usr/local/include
/usr/tmp/test/sparc-sun-solaris2.5/include
/usr/tmp/test/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.12/include
/usr/include
End of search list.
/usr/tmp/test/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.12/cc1plus /var/tmp/cc
a0078i.ii -quiet -dumpbase vb.cc -version -o /var/tmp/cca0078i.s
GNU C++ version egcs-2.90.12 971008 (gcc2-970802 experimental) (sparc-sun-solari
s2.5) compiled by GNU C version egcs-2.90.10 970924 (gcc2-970802 experimental).
vb.cc: In method `void dd1::f()':
vb.cc:4: `void base::f()' is protected
vb.cc:25: within this context
vb.cc: In method `void d1_and_base::f()':
vb.cc:4: `void base::f()' is protected
vb.cc:36: within this context
-------------------- vb.cc -------------
class base {
protected:
virtual void f();
};
class d1 : public virtual base {
protected:
void f();
};
void d1::f()
{
base::f();
}
class dd1 : public virtual d1 {
protected:
void f();
};
void dd1::f()
{
d1::f();
base::f();
}
class d1_and_base : public virtual d1, public virtual base {
protected:
void f();
};
void d1_and_base::f()
{
d1::f();
base::f();
}
More information about the Gcc-bugs
mailing list