Re: more inheritance patterns
* Mick Charles Beaver:
At work, someone showed me a way to avoid virtual functions while
maintaining an interface class.
Basically,
class _MyClass {
void Method;
};
#if defined(LINUX)
#include "linux/MyLinuxClass.h"
class MyClass : public MyLinuxClass {};
#elif defined(WINDOWS)
#include "windows/MyWindowsClass.h"
class MyClass : public MyWindowsClass {};
#endif
Then, throughout the code base, MyClass would be used, following the
interface defined in _MyClass, while still allowing platform-specific
code where needed.
Well your description is woefully incomplete. Here are some problems:
1. Name that starts with underscore followed by uppercase, "_MyClass",
is reserved for the implementation.
2. Non-virtual member functions can't be overridden.
3. Direct includes of platform-specific definitions pollutes namespaces
with platform-specific things.
For problem 3 you may look up the PIMPL idiom.
My question is, where could I read about more constructions like this?
Believe me, you don't want to, except where they're discussed in depth as
*anti-patterns*.
My coworker called it an "inheritance pattern." I'd love to learn more
about them (even though I'm sure a case can be made for avoiding this
style).
It needs no case. It's braindead. You don't need to make a case to avoid eating
rotten worm-infested apples, at least not when shiny fresh good apples are all
around, some for free, and you're not starving to the point of eating flies. :-)
Cheers, & hth.,
- Alf
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?