www.digitalmars.com         C & C++   DMDScript  

c++ - another access problem:

reply Arjan Knepper <arjan ask.me> writes:
----------------------------------------<snip>---------------------------
#include <stdio.h>


class  ThePrivateBase
{
    public :
       ThePrivateBase () {}
       ThePrivateBase ( void *_a ) {}
       ThePrivateBase ( const ThePrivateBase &_a );
};


class  Derived : private ThePrivateBase
{
    public :
       Derived () {}
       Derived ( int *_a ) : ThePrivateBase ( _a ) {}
       Derived ( const ThePrivateBase &_q ) : ThePrivateBase ( _q ) {}
#if defined _HUH_
       Derived ( const Derived &_q ) : ThePrivateBase ( _q ) {}
#endif
};



int  main ()
{
    Derived  d;

    return ( 0 );
}

----------------------------------------<snip>---------------------------
Compiling with -D_HUH_ gives an error:
inh.cpp(19) : Error: member 'ThePrivateBase' of class 'Derived' is not 
accessible

According to my (limited) knowledge it should be accessable. Or am I wrong?

Thanks,
Arjan
Aug 09 2004
parent reply Heinz Saathoff <hsaat despammed.com> writes:
Hello Arjan,

Arjan Knepper wrote...
 #include <stdio.h>
 
 
 class  ThePrivateBase
 {
     public :
        ThePrivateBase () {}
        ThePrivateBase ( void *_a ) {}
        ThePrivateBase ( const ThePrivateBase &_a );
 };
 
 
 class  Derived : private ThePrivateBase
 {
     public :
        Derived () {}
        Derived ( int *_a ) : ThePrivateBase ( _a ) {}
        Derived ( const ThePrivateBase &_q ) : ThePrivateBase ( _q ) {}
 #if defined _HUH_
        Derived ( const Derived &_q ) : ThePrivateBase ( _q ) {}
 #endif
 };
 
 
 
 int  main ()
 {
     Derived  d;
 
     return ( 0 );
 }
 
 ----------------------------------------<snip>---------------------------
 Compiling with -D_HUH_ gives an error:
 inh.cpp(19) : Error: member 'ThePrivateBase' of class 'Derived' is not 
 accessible
 
 According to my (limited) knowledge it should be accessable. Or am I wrong?

Yes, this should be allowed. First I wasn't sure, so I asked this in the german C++ newsgroup and got a confirmation that the _HUH_ part is valid. I also checked with PC-Lint which also accepts this. - Heinz
Aug 12 2004
parent Arjan Knepper <arjan ask.me> writes:
Heinz Saathoff wrote:
 Hello Arjan,
 
 Arjan Knepper wrote...
 
#include <stdio.h>


class  ThePrivateBase
{
    public :
       ThePrivateBase () {}
       ThePrivateBase ( void *_a ) {}
       ThePrivateBase ( const ThePrivateBase &_a );
};


class  Derived : private ThePrivateBase
{
    public :
       Derived () {}
       Derived ( int *_a ) : ThePrivateBase ( _a ) {}
       Derived ( const ThePrivateBase &_q ) : ThePrivateBase ( _q ) {}
#if defined _HUH_
       Derived ( const Derived &_q ) : ThePrivateBase ( _q ) {}
#endif
};



int  main ()
{
    Derived  d;

    return ( 0 );
}

----------------------------------------<snip>---------------------------
Compiling with -D_HUH_ gives an error:
inh.cpp(19) : Error: member 'ThePrivateBase' of class 'Derived' is not 
accessible

According to my (limited) knowledge it should be accessable. Or am I wrong?

Yes, this should be allowed. First I wasn't sure, so I asked this in the german C++ newsgroup and got a confirmation that the _HUH_ part is valid. I also checked with PC-Lint which also accepts this. - Heinz

Thanks! Than now this email is a compiler bug report. Arjan
Aug 12 2004