www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1994/08/31/11:01:24

Date: Wed, 31 Aug 1994 08:07:28 +0700
From: gchen AT suntzu DOT psg DOT datap DOT ca (Ganping Chen)
To: djgpp AT sun DOT soe DOT clarkson DOT edu
Subject: Access control to base classes.

DJGPP seems don't follow the access control rules to base classes. For the
following test program, it is supposed to have 5 errors. But DJGPP just
ignores all the access control rules, treats all the base classes public.
How it acts so wierd?

---- test program ----

#include <iostream.h>

class X
{
protected:
    int i;
    int j;
public:
    void get_ij(void);
    void put_ij(void);
};

class Y : private X                 // private X, not public
{
    int k;
public:
    int get_k(void);
    void make_k(void);
};

class Z : public Y
{
public:
    void f(void);
};

void X::get_ij(void)
{
    cout << "Enter two numbers: ";
    cin >> i >> j;
}
void X::put_ij(void)
{
    cout << i << " " << j << endl;
}
int Y::get_k(void)
{
    return k;
}
void Y::make_k(void)
{
    k = i*j;
}
void Z::f(void)
{
    i = 2;           // error 1
    j = 3;           // error 2
}

main(void)
{
    Y var;
    Z var2;

    var.get_ij();                 // error 3
    var.put_ij();                 // error 4

    var.make_k();
    cout << var.get_k() << endl;

    var2.f();
    var2.put_ij();                // error 5

    return 0;
}


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019