ciao.
Ho implementato il pattern decorator su di una classe DrawableNode che renderizza una mesh quando è chiamata la funzione Draw.
L'idea è quella di creare un decorator per eventuali effetti tipo la selezione , disegno quote e misure, ecc.. e aggiungere/rimuovere i decorator dinamicamente
Per adesso ho creato il BoundingBoxDecorator che renderizza un box 3d attorno alla mesh del DrawableNode.
Posto il codice:

DrawableNode:

codice:
    class DrawableNode : public Node
    {
    public:
    DrawableNode(){;}
    virtual ~DrawableNode();

    virtual void DrawNode(Renderer* pRenderer);
    void Selected(bool flag);// add boundingboxdecorator
    TriMeshPtr m_pMesh;
    };
Decorator
codice:
   
    class Decorator : public DrawableNode
    {
    public:
    Decorator(){};
    Decorator(DrawableNodePtr pComponent);
    virtual ~Decorator();
    void DrawNode(Renderer* pRenderer);

    protected:
    DrawableNodePtr m_pComponent;

    };
DecoratorBoundingBox
codice:
    class DecoratorBoundingBox : public Decorator
    {
    public:
    DecoratorBoundingBox();
    DecoratorBoundingBox(DrawableNodePtr pComponent);
    virtual ~DecoratorBoundingBox();
    virtual void DrawNode(Renderer* pRenderer);
    void DrawBoundingBox();
    };
il mio problema è questo:
è possibile aggiungere il decorator DecoratorBoundingBox dall' interno della DrawableNode?
ad es per selezionare la mesh dall esterno basta fare:

DrawableNode pNode = new DrawableNode
.
.
.

pNode = new DecoratorBoundingBox(pNode);


ma per fare la stessa cosa dall interno della classe DrawableNode , come faccio?
vorrei fare :

void DrawableNode::Select()
{
this = new DecoratorBoundingBox(this);
}

ma mi da un errore.


grazie.