
"Andrei Alexandrescu (See Website For Email)" <SeeWebsiteForEmail@moderncppdesign.com> writes:
Pavel Vozenilek wrote:
"Jason Hise" wrote:
In many cases I am getting the warning that specific classes have virtual functions, but non virtual destructors. This is intentional, because they only have virtual functions in debug mode (pure virtual, to make the singleton uncreatable by client code) and will never be destroyed through a pointer to base. I wanted to avoid the overhead of a vtable in release mode. Is there a way to disable this specific warning while compiling with gcc?
No, there's no way to disable this or that warning using pragma in GCC (though I read somewhere they will finally add such feature). Perhaps you may use a kludge with conditional macros.
Wouldn't making the destructor virtual in debug mode serve as a satisfactory solution?
I suppose this would work. The only problem is that client code must remember to do this as well if they choose for their singleton to
David Abrahams wrote: provide a destructor.
Or I guess you could pick one of the many other mechanisms used to make a class abstract (?)
To which mechanisms are you referring? AFAIK, a pure virtual function is the only way to automatically make any derived classes un-instantiable. -Jason