Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!zaphod.mps.ohio-state.edu!rpi!sci.ccny.cuny.edu!phri!marob!slhisc!paul From: paul@slhisc.uucp (Paul Tam) Newsgroups: comp.lang.c++ Subject: Zortech compiler 2.0 Message-ID: <1990Nov26.182617.14902@slhisc.uucp> Date: 26 Nov 90 18:26:17 GMT Sender: Paul Tam Organization: Shearson Lehman Brother, Inc. Lines: 83 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 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