Mail Archives: djgpp/1994/12/05/09:15:15
>
> I was wondering if anyone knew a good method to pass member functions
> to something.
>
> if I want to develop a generic list of pointers to functions, that say draw_me();
> is there any way to do this?
> What I am doing know is this,
> the list stores two things, the address of the of member (a s a void)
> and an integer identifier.
> e.g. to call,
>
> switch (ID)
> case BOX : ( (box *)dummyPointer)->draw(); breajk
> case CIRCLE : ( (circle *)dummyPointer)->draw(); break;
> etc.
>
> I have heard that C++ functions are just liked dos functions in which the
> first parameter is "this" is this always the case? Is there a way to
> take advantage of this?
I don't know what are you doing, but I guess this would help...
1) Create a hierarchy of GraphicObjects:
+-------+
|GObject|
+-------+
| |
+-------+
|Draw() |
+-------+
|
|
+-------O----------
| |
+------+ +----+
|Box | |Line|
+------+ +----+
As you can see, draw is defined as a virtual function in the parent class
2) Now you can do things like this:
Box b(0,0,10,10);
Line l(1,1,2,2);
GObject vector[2];
vector[1]=b;
vector[2]=l;
for (int i=0;i<2;i++) vector[i].draw();
3) You can pass the functions as GObject::*, a pointer to a member of GObject
Hope this helps
Rafael Pinto
----------------------------------------------------------------------------
Rafael Gustavo C. P. Pinto | Phone: 55-21-598-2454
Software Engineer - CEPEL | Fax: 55-21-260-1340
Electric Power Research Center |
P.O. Box 2754 | E-Mail:rafael AT acsi DOT cepel DOT br
Rio de Janeiro, RJ 20.001 - Brasil | rafael AT fund DOT cepel DOT br
| rafael AT coe DOT ufrj DOT br
----------------------------------------------------------------------------
- Raw text -