becher@argosy.UUCP (Jonathan D. Becher) (08/29/89)
We brought up g++ 1.35.0 last week and ran into a series of problems. The only one I wasn't able to work around is the following: The following code incorrectly, I believe, calls the derived method instead of the base class method. Is this still a problem in newer versions? What can I do for a fix? g++ version 1.35.0 /usr/local/lib/gcc-cpp -+ -v -undef -D__GNU__ -D__GNUG__ -D__cplusplus -Dvax -Dunix -D__vax__ -D__unix__ t.cc /tmp/cca04568.cpp GNU CPP version 1.35 /usr/local/lib/gcc-cc1plus /tmp/cca04568.cpp -quiet -dumpbase t.cc -noreg -version -o /tmp/cca04568.s GNU C++ version 1.35.0 (vax) compiled by GNU C version 1.34. as /tmp/cca04568.s -o t.o /usr/local/lib/gcc-ld++ -C /usr/local/lib/crt0+.o t.o -lg++ /usr/local/lib/gcc-gnulib -lc class parent { public: int foo() { printf("parent\n"); } }; class child : public parent { public: int foo() { printf("child\n"); } }; main() { child bar; int i = bar.parent::foo(); } Jon Becher argosy!becher@decwrl.dec.com "Why is live, evil spelled backwards?"
schmidt@zola.ics.uci.edu (Doug Schmidt) (08/29/89)
In article <235@argosy.UUCP>, becher@argosy (Jonathan D. Becher) writes: >We brought up g++ 1.35.0 last week and ran into a series of problems. >The only one I wasn't able to work around is the following: > >The following code incorrectly, I believe, calls the derived method >instead of the base class method. Is this still a problem in newer >versions? What can I do for a fix? >class parent { >public: > int foo() { printf("parent\n"); } >}; > >class child : public parent { >public: > int foo() { printf("child\n"); } >}; > >main() >{ > child bar; > > int i = bar.parent::foo(); >} My version of g++ (a beta 1.36 based upon gcc-1.35.97) prints parent I assume this means the bug is fixed?! Doug -- schmidt@ics.uci.edu (ARPA) | Per me si va nella citta' dolente. office: (714) 856-4043 | Per me si va nell'eterno dolore. | Per me si va tra la perduta gente. | Lasciate ogni speranza o voi ch'entrate.