Re: more inheritance patterns
On Jun 27, 6:17 pm, Noah Roberts <u...@example.net> wrote:
Mick Charles Beaver wrote:
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.
I don't understand, are you saying that you cast your MyClass
objects to _MyClass? I don't see how you could otherwise be
getting any behavior from your MyClass objects at all. The
subclassing thing I understand but I don't see what _MyClass
is doing.
Frankly, the simplest way to implement non-virtual
polymorphism is with templates.
Even that's unnecessary additional complexity (and not a very
good solution for this particular problem). In this case, link
time resolution handles all of the problems simply and
elegantly.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34