[Bug c++/12060] New: Adding virtual functions changes access to data member of class.

duma at gorodok dot net gcc-bugzilla@gcc.gnu.org
Tue Aug 26 04:47:00 GMT 2003


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12060

           Summary: Adding virtual functions changes access to data member
                    of class.
           Product: gcc
           Version: 3.2.2
            Status: UNCONFIRMED
          Severity: minor
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: duma at gorodok dot net
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i586-mandrake-linux-gnu
  GCC host triplet: i586-mandrake-linux-gnu
GCC target triplet: i586-mandrake-linux-gnu

Access qualifier in declaring derived classes is 'protected'. 
Qualified access to access data member is used in the most derived class. 
Data member is declared protected. 
 
Adding virtual functions in class hierarchy leads to error:  
access to base class' member is forbidden. 
 
The following code demonstrate it: 
//removing all virtual functions makes it compilable 
class A 
{ 
protected: 
        int a; 
}; 
 
class B : protected A {}; 
 
class C : protected A 
{ 
//comment it out 
        virtual void f()=0; 
}; 
 
class D : protected B, protected C 
{ 
public: 
public: 
//comment it out  
        virtual void g()=0; 
}; 
 
class S : public D 
{ 
        int c; 
        void setc(){ c = B::a + C::a;} 
//comment it out 
        void g(){} 
        void f(){} 
};



More information about the Gcc-bugs mailing list