There is a gcc 2.95.3 compiler bug where inheriting from a base class with a private 'operator delete' (and its matching partner 'operator new') complains and bails. Privitizing class specific operator new/delete pair is a common idom to prevent freestore allocation. This is fixed in later version of gcc. 1 #include <sys/types.h> 2 3 class Base 4 { 5 public: 6 Base() {} 7 ~Base() {} 8 private: 9 // Prevent allocation on freestore -- privitize op new/delete 10 static void* operator new (size_t size); 11 static void operator delete(void*); 12 }; 13 14 class Derived : public Base 15 { 16 public: 17 Derived() {} 18 ~Derived() {} 19 }; % gcc -save-temps -Wall baseopdelete.cpp baseopdelete.cpp: In method `Derived::~Derived()': baseopdelete.cpp:11: `static void Base::operator delete(void *)' is private baseopdelete.cpp:18: within this context
Created attachment 9797 [details] baseopdelete.ii
% gcc -v Reading specs from /opt/third-party/depot/Linux-2.4c2.2-i686/gcc-2.95.3/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/specs gcc version 2.95.3 20010315 (release)
Created attachment 9798 [details] baseopdelete.cpp
Yes 2.95.3 is 4 years old and have not been maintined for about 4 years now. This was fixed in 3.0 which also stoped being maintained for 3 years.