【发布时间】:2009-03-23 11:57:23
【问题描述】:
考虑以下代码:
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 库吗?
-
能否请您澄清一下“问题是保存方法指针或函子的数据结构类型。”
-
我试图用 std::tr1::mem_fun 模板来实现它。但是结果的类型在参数的类型之内。所以我无法制作包含它的异构向量。
-
你需要一个不带boost的解决方案吗?
-
其实我可能会使用boost。所以这个问题得到了回答。谢谢。
标签: c++ pointers methods types dispatcher