I use the virtual inheritance.
I basically have the "tree" of inheritance for some abstract module:
class Positionable{
public:
virtual std::string getName() = 0;
};
class Positionable3D : virtual public Positionable{
public:
virtual void setCenter(Point3D ¢er) = 0;
};
class Renderable3D : virtual public Positionable3D{
public:
virtual void render() = 0;
};
I write the implementation of it, using my own structures that inherit from them:
class FeyPositionable : virtual public Positionable{
public:
virtual std::string getAdditionalInfo() = 0;
};
class FeyPositionable3D
: virtual public Positionable3D, virtual public FeyPositionable{
public:
virtual void someFun() = 0;
};
class FeyRenderable3D
: virtual public Renderable3D, virtual public FeyPositionable3D{
protected:
GeometryStructure * structure;
public:
virtual void render() = 0;
};
But when I compile it and run in Visual C++ 2012, in debug window I see many duplicates of functions and members, for example:
Is it only the debugger window "problem", or I have multiple copies of methods/members? If so, can they have different values (e.g. copies of structure)?