Hi,
Sorry for my C++ ignorance, but what does the following do?

=========================================
void
performer_each (SCM list, Performer_method method)
{
 for (SCM p = list; scm_is_pair (p); p = scm_cdr (p))
   {
Performer *e = dynamic_cast<Performer *> (unsmob_translator (scm_car (p)));
     if (e)
   (e->*method) ();
   }
}
=========================================

I'm particularly interested in this strange construct:
   (e->*method) ();

I can see that (e->*method) must yield a function pointer, but the best I can come up with is that 'method' is somehow a pointer to a class member function which is transposed with the last derived version from the type that e is, because if 'method' was a function pointer, then surely (*method)() would be sufficient (?)

Sorry but this just blows my mind...and it is a bit late here....

Regards,
Ralph









_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to