PDA

Visualizza la versione completa : [C++] Applicazione del pattern Decorator


giuseppe500
09-07-2010, 12:58
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:




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

virtual void DrawNode(Renderer* pRenderer);
void Selected(bool flag);// add boundingboxdecorator
TriMeshPtr m_pMesh;
};



Decorator



class Decorator : public DrawableNode
{
public:
Decorator(){};
Decorator(DrawableNodePtr pComponent);
virtual ~Decorator();
void DrawNode(Renderer* pRenderer);

protected:
DrawableNodePtr m_pComponent;

};


DecoratorBoundingBox


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.

giuseppe500
10-07-2010, 13:07
up

alka
13-07-2010, 13:25
Originariamente inviato da giuseppe500
ma mi da un errore.


Credo che specificare l'errore sia abbastanza fondamentale... :fagiano:

Loading