c++/2739: g++ allows accessing a private member

dmuell@gmx.net dmuell@gmx.net
Fri May 4 08:16:00 GMT 2001


>Number:         2739
>Category:       c++
>Synopsis:       g++ allows accessing private members
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          accepts-illegal
>Submitter-Id:   net
>Arrival-Date:   Fri May 04 08:16:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Dirk Mueller
>Release:        3.0 20010504 (prerelease)
>Organization:
>Environment:
System: Linux 2.4.4
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../configure --enable-shared --enable-threads --enable-languages=c,c++
>Description:

g++ fails to check the declared private: access specification in derived
classes for static members. 

>How-To-Repeat:

=== Cut ===
class Base {
private:
    static int fooprivate;
protected:
    static int fooprotected;
public:
    static int foopublic;
};

class Derived : public Base {
public:
    void test();
};

int Base::fooprivate=42;
int Base::fooprotected=42;
int Base::foopublic=42;

void Derived::test() {
    if ( fooprivate );
    if ( fooprotected );
    if ( foopublic );
}

int main()
{
    Derived d;
    d.test();
}
=== Cut ===

>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the Gcc-bugs mailing list