russb@sampson.JPL.NASA.GOV (Russ Brill) (01/30/91)
I have discovered what appear to me to be 2 bugs in the Sun 2.0 cfront. Am I right? Does Sun already know about these? Bug #1: When the following program is compiled, the compiler will issue a warning that D::f() has hidden B::f(int) (as it should), but it will not tell you that you must define a D::f(int), and the program will crash! #include <iostream.h> class B { public: virtual void f(int) = 0; }; class D : public B { public: void f() {cout << "running D::f()" << endl;} }; main() { D d; B* pb = &d; pb->f(3); } [end of program] Bug #2: When the following program is compiled, it only elicits a warning (rather than the expected error) about calling a non-const member function in a const object, and the program runs as if the object were *not* const. #include <iostream.h> class C { int i; public: C() {i = 0;} void f(int j) {i = j; cout << "new i = " << i << endl;} }; main() { const C c; c.f(3); } [end of program]