[comp.lang.c++] Zortech compiler 2.0

paul@slhisc.uucp (Paul Tam) (11/27/90)

I have a question about Zortech C++ compiler 2.0. I am new to 
c++ and am using Zortech c++ compiler to learn the language. 
However I came across some interesting result that to my understanding
shouldn't have happened.  

I have a little sample program which has defined one parent_class and
a derived_class from the parent_class. The derived_class is declared
to have private inheritance from the parent class. In theory any 
member functions of the parent_class are not visible to derived_class's 
objects. (If I'm not mistaken). 

However the interesting result I got is in my main, I can call the 
member functions of parent_class from derived_class object d1. 

Are these kind of errors supposed to be picked up by the compiler ?
If the answer is yes, How come Zortech's c++ compiler failed to 
pick it up. Is this a bug?

If this is a bug, it is a very serious one. Should I think about
upgrade to Zortech's c++ compiler v2.1 ? 

Here are the source of my test program:
------------------------------------------------------------------- 
 
#include <stdio.h>

class parent_class
{
   private:
       int private1, private2;
   public:
       parent_class (int p1, int p2)
       {
           private1 = p1;
           private2 = p2;
       }
       void assign (int p1, int p2)
       {
           private1 = p1;
           private2 = p2;
       }
       int inc1 () { return ++private1; }
       int inc2 () { return ++private2; }
       void display ()
       {
           printf ("\nprivate1 = %d, private2 = %d", private1, 
                   private2);
       }
};

class derived_class1 : private parent_class
{
   private:
       int private3;
       parent_class private4;
   public:
       derived_class1 (int p1, int p2, int p3, int p4, int p5) 
           : (p1, p2), private4 (p3, p4)
       {
           private3 = p5;
       }
};                       

main ()
{
   derived_class1 d1(17,18, 1, 2, -5);

   d1.inc1 ();
   d1.inc2 ();
   d1.display ();
}


-------------------------------------------------------------------------
the result is 

private1 = 18, private2 = 19


I'd appreciate any answers and thanks for any better solutions

Paul