【发布时间】:2013-12-13 10:54:08
【问题描述】:
我有方法
typedef void
(* JSErrorReporter)(JSContext *cx, const char *message, JSErrorReport *report);
JS_SetErrorReporter(JSContext *cx, JSErrorReporter er);
我想传递对象的方法而不是静态方法
JS_SetErrorReporter(cx,this->Reporter);//Failed !
其中 Reporter 是对象的方法(不是静态的)
JS_SetErrorReporter(cx,Reporter); //Passed
其中 Reporter 是静态方法,声明为
static void SomeClass::reportError(JSContext *cx, const char *message, JSErrorReport *report)
【问题讨论】:
-
使用
&SomeClass::reportError那么,this->Reporter是完全错误的语法(即使对于成员函数指针)。静态方法无论如何都不知道this。 -
你可以做的是提供一个静态方法,它以某种方式从上下文中获取
this指针。我不知道JSContext是否提供了一些void* userData;成员,可以用于此。
标签: c++ pointers methods casting