让我们以一个简单的类为例:
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'
的关键字。 .
感谢任何帮助。非常感谢。
问候, 罗汉
最佳答案
调查 official example code ,你应该这样做:
MyClass::MyClass() {
QScriptValue self = engine.newFunction(foo, 0);
....
}
编辑: 好吧,我仔细查看了引用资料。问题是,您试图在需要函数的地方传递一个方法。作为@mosg指出,这是不可能的。要么将 foo
设为静态函数 - 或者在引用的线程中尝试解决方案。这意味着,您通过 engine.newQObject
创建了一个新的 QObject
。
关于c++ - 使用带有 QScriptEngine::newFunction 的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935802/