让我们以一个简单的类为例:
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'
.
任何帮助表示赞赏。多谢。
问候,
罗汉
展望官方示例代码 http://doc.trolltech.com/4.5/qscriptengine.html#newFunction,你应该这样做:
MyClass::MyClass() {
QScriptValue self = engine.newFunction(foo, 0);
....
}
EDIT:好的,我进一步查看了参考资料。问题是,您尝试传递需要函数的方法。作为 @mosg https://stackoverflow.com/users/299909/mosg指出,这是不可能的。要么你做foo
静态函数 - 或者您在引用的线程中尝试解决方案。这意味着,您创建了一个新的QObject
via engine.newQObject
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)