让我们来看一个简单的类:
QScriptEngine engine;
class MyClass {
public:
QScriptValue foo(QScriptContext*, QScriptEngine*);
MyClass();
};
QScriptValue MyClass:foo(QScriptContext* context, QScriptEngine* eng) {
//something
}
MyClass::MyClass() {
QScriptValue self = engine.newFunction(this->foo, 0);
....
}
上面的函数给出了一个错误:
no matching function for call to ‘QScriptEngine::newFunction(<unresolved overloaded function type>, int)’
我尝试使用engine.newFunction(reinterpret_cast<FunctionSignature>(foo), 0);
,但这给了我一个错误,基本上说编译器不知道名为'FunctionSignature'
的关键字。
感谢任何帮助。非常感谢。
此致 罗汉
答案 0 :(得分:1)
查看official example code,您应该执行以下操作:
MyClass::MyClass() {
QScriptValue self = engine.newFunction(foo, 0);
....
}
编辑:好的,我更多地查看了参考文献。问题是,您尝试传递需要函数的方法。正如@ mosg指出的那样,这是不可能的。您可以使foo
成为静态函数 - 或者在引用的线程中尝试解决方案。这意味着,您可以通过QObject
创建新的engine.newQObject
。
答案 1 :(得分:0)
解静态方法:
class MyClass {
public:
static QScriptValue foo(QScriptContext*, QScriptEngine*);
MyClass();
};
...
QScriptValue func = engine.newFunction(MyClass::foo)