【发布时间】:2009-08-16 10:53:19
【问题描述】:
以下代码不起作用,但它很好地表达了我想要做的事情。模板结构容器存在问题,我认为应该可以工作,因为它的大小对于任何模板参数都是已知的。
class callback {
public:
// constructs a callback to a method in the context of a given object
template<class C>
callback(C& object, void (C::*method)())
: ptr.o(object), ptr.m(method) {}
// calls the method
void operator()() {
(&ptr.o ->* ptr.m) ();
}
private:
// container for the pointer to method
template<class C>
struct {
C& o;
void (C::*m)();
} ptr;
};
有没有办法做这样的事情?我的意思是有一个非模板类回调,它包含任何指向方法的指针?
感谢 C++ 大师!
编辑:
请看这个:
【问题讨论】:
-
你想使用
boost::function或boost::signal:boost.org/doc/libs/1_39_0/doc/html/function.html。
标签: c++ templates callback pointer-to-member