Skip to Content.
Sympa Menu

gang-of-4-patterns - [gang-of-4-patterns] Re: <Composite pattern with type checking>

gang-of-4-patterns AT lists.cs.illinois.edu

Subject: Design Patterns discussion

List archive

[gang-of-4-patterns] Re: <Composite pattern with type checking>


Chronological Thread 
  • From: "Atsushi Tanabe" <ttn13w30a9 AT mx1.ttcn.ne.jp>
  • To: <gang-of-4-patterns AT cs.uiuc.edu>
  • Subject: [gang-of-4-patterns] Re: <Composite pattern with type checking>
  • Date: Mon, 27 Feb 2006 00:02:25 +0900
  • List-archive: <http://lists.cs.uiuc.edu/pipermail/gang-of-4-patterns>
  • List-id: Design Patterns discussion <gang-of-4-patterns.cs.uiuc.edu>

Hello.
About the Compsite Pattern, I thought of the implementation with type
checking.
A code is as follows.
In main, A leaf object is going to call an Add method, and an error occurs.


class Component {
public:
virtual void Add(Component* parent);
virtual void Remove(Component* parent);
};
void Component::Add(Component* parent){};
void Component::Remove(Component* parent){};

class Composite:public Component{
};

class NotComposite{
virtual void Add(Component* parent);
virtual void Remove(Component* parent);
};
void NotComposite::Add(Component* parent){};
void NotComposite::Remove(Component* parent){};

class Leaf:public Component, public NotComposite{
};


int main(){
Component* cmp;
Leaf* lfp;
Leaf lf;
Composite cs;

cmp = &lf;
cmp->Add(cmp);
cmp->Remove(cmp);

lfp = &lf;

lfp->Add(cmp); //compile error
lf.Add(cmp); //compile error

return 0;
}

Please tell an opinion.
Thank you.

Atsushi Tanabe(Japanese)






Archive powered by MHonArc 2.6.16.

Top of Page