考虑以下代码:
struct X { void MethodX() { ... } }; struct Y { void MethodY() { ... } }; void test () { X x; Y y; Dispatcher d; d.Register("x", x, &X::MethodX); d.Register("y", y, &Y::MethodY); d.Call("x"); d.Call("y"); }
问题是如何实现Dispatcher.我不介意X和Y可以继承某些东西,但是Dispatcher应该允许更多的客户端(不仅仅是X和Y).如果可能的话我想避免使用void*指针:)
看一下boost :: function,就可以了.