如何将类方法施加到qscriptEngine :: functionsignature

How do I cast class method to QScriptEngine::FunctionSignature

本文关键字:qscriptEngine functionsignature 施加 类方法      更新时间:2023-10-16

我想通过此方法:

QScriptValue ScriptProcessContext::construct(QScriptContext * ctx, QScriptEngine *)
{
    return this->newInstance();
}

QScriptEngine::newFunction。我尝试了以下选项:

  • 与文档一样,此示例代码:

    QScriptValue ctor = engine->newFunction(construct);
    

    错误:

    error C3867: 'ScriptProcessContext::construct': function call missing argument list; use '&ScriptProcessContext::construct' to create a pointer to member
    
  • 强制演员:

    QScriptValue ctor = engine->newFunction((QScriptEngine::FunctionSignature)construct);
    

    错误:

    error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'QScriptEngine::FunctionSignature'
    
  • 将指针铸成成员

    QScriptValue ctor = engine->newFunction(
       (QScriptValue(ScriptProcessContext::*)(QScriptContext *, QScriptEngine *))
        &ScriptProcessContext::construct
    );
    

    错误:

     error C2664: 'QScriptValue QScriptEngine::newFunction(QScriptEngine::FunctionSignature,int)' : cannot convert parameter 1 from 'QScriptValue (__cdecl ScriptProcessContext::* )(QScriptContext *,QScriptEngine *)' to 'QScriptEngine::FunctionSignature'
    

那么如何正确编写?

您尝试通过会员功能。这是不支持的。使用免费功能或静态方法。

请注意,在这两种情况下,您都不会有this指针。您需要以不需要对象的方式编写功能。