>Submitter-Id: net >Originator: ken >Organization: OpenOffice.org >Confidential: no >Synopsis: Failure to deal with using and private inheritance >Severity: serious >Priority: >Category: c++ >Class: rejects-legal >Release: 3.3.1 20030626 (Debian prerelease) (Debian testing/unstable) >Environment: System: Linux gandalf 2.4.20 #4 Mon Apr 7 22:21:12 EST 2003 i686 GNU/Linux Architecture: i686
host: i386-pc-linux-gnu build: i386-pc-linux-gnu target: i386-pc-linux-gnu configured with: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc i386-linux >Description: Code following works in gcc 3.2 but not in gcc 3.3.1, worked in gcc 3.3.0. gcctest.cpp: In member function `void INetContentTypeParameterList::Clear()': gcctest.cpp:21: error: cannot call member function `int Container::Count()' without object gcctest.cpp:22: error: cannot call member function `int Container::Count()' without object >How-To-Repeat: class Contained {}; class Container { public: int Count(); void* Remove(int); }; class List : private Container { public: using Container::Count; using Container::Remove; }; class INetContentTypeParameterList : private List { public: void Clear(); }; void INetContentTypeParameterList::Clear() { while (Count()) delete static_cast<Contained*>(Remove(Count() - 1)); } int main() { INetContentTypeParameterList ilist; ilist.Clear(); } >Fix: