class base{
public:
void func(double);
protected:
void func(long);
private:
void func(int);
};
class deriv : public base
{
public:
//Constructor, llama a base::func(long).ok es protected.
deriv( ) { func(42L); }
void f( ) { func(42); }//Error: base::func(int) es privado.
};
class global : private deriv
{
public:
// Constructor. llama a deriv::f( ).ok es publico.
// pero existe un error en deriv::f( ).
global() { f( ); }
};
int main(int argc, char* argv[])
{
deriv d;
d.func(42L);//Error: func(long) es accesible desde base o deriv solamente.
//Aunque base esta instanciado public en deriv, base::func(long) es protected.
d.func(42);//Error. peor todavia. base::func(int) es privado.
global g;
g.f( );//Error. ya que si bien deriv::f( ) es publico no se puede acceder
// desde aqui por que deriv está instanciado privado en global.
return(0);
}