Thanks David Rivshin and Shane K Porzio for the following. ====================================================================== see ~dfr2936/class/CA/archlib-2-5a-dfr2936.tar.gz for my changes. 5 main categories of changes/fixes: Accessing protected members in objects of classes which are not superclasses of 'this' (fails to compile). (^^removed need to do setname() at all, see diffs) Comparisons between signed and unsigned (warns). Storing IOS flags in wrong type (warns). Listing initializers in constructor order different than listed in class definition (lint type warnings which annoyed me). General cleanup (using bool instead of int where obvious, making some classes inner classes) I'm sure more cleanup could be done, but I stopped looking once it compiled without any warnings with -Wall. Tested with gcc3.3.2 and gcc3.3.3, and Sun CC V5.4 (which really needs to be upgraded, BTW) Oh, and I mucked up the Makefile to use gcc, and put things where I wanted them, but you'll probably want to ignore that. Enjoy. ====================================================================== Professor White, I noticed these two problems in compiling the arch package on 2 of my systems. gcc 2.95.4 on redhat linux (redhat 8) and gcc 3.3.2 on linux (Fedora Core 1) CPUObject.h: line 67 void set_name( const char *id ); this function must be made public for the package to compile error: CPUObject.h: In constructor `BusALU::BusALU(const char*, int)': CPUObject.h:67: error: `void CPUObject::set_name(const char*)' is protected BusALU.C:69: error: within this context only on gcc 3.3.2 Clock.C: line 57 long old = cout.setf( ios::dec, ios::basefield ); StorageObject.C: line 42 long k = cout.setf( ios::dec, ios::basefield ); old and k cannot be of type long anymore. must be changed to type: "std::_Ios_Fmtflags" errors: Clock.C: In static member function `static void Clock::tick()': Clock.C:60: error: invalid conversion from `long int' to `std::_Ios_Fmtflags' Clock.C:60: error: initializing argument 1 of `std::_Ios_Fmtflags std::ios_base::flags(std::_Ios_Fmtflags)' StorageObject.C: In constructor `StorageObject::StorageObject(const char*, int, long int)': StorageObject.C:49: error: invalid conversion from `long int' to ` std::_Ios_Fmtflags' StorageObject.C:49: error: initializing argument 1 of `std::_Ios_Fmtflags std::ios_base::setf(std::_Ios_Fmtflags, std::_Ios_Fmtflags)' I hope this helps people who are trying to compile at home. Sincerely, Shane Porzio