Je veux passer cette méthode:Comment puis-je jetai méthode de classe à QScriptEngine :: FunctionSignature
QScriptValue ScriptProcessContext::construct(QScriptContext * ctx, QScriptEngine *)
{
return this->newInstance();
}
à QScriptEngine::newFunction
. J'ai essayé les options suivantes:
Comme dans la documentation and also this example code:
QScriptValue ctor = engine->newFunction(construct);
Erreur:
error C3867: 'ScriptProcessContext::construct': function call missing argument list; use '&ScriptProcessContext::construct' to create a pointer to member
Force de la distribution:
QScriptValue ctor = engine->newFunction((QScriptEngine::FunctionSignature)construct);
Erreur:
error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'QScriptEngine::FunctionSignature'
transtyper le pointeur à un membre
QScriptValue ctor = engine->newFunction( (QScriptValue(ScriptProcessContext::*)(QScriptContext *, QScriptEngine *)) &ScriptProcessContext::construct );
Erreur:
error C2664: 'QScriptValue QScriptEngine::newFunction(QScriptEngine::FunctionSignature,int)' : cannot convert parameter 1 from 'QScriptValue (__cdecl ScriptProcessContext::*)(QScriptContext *,QScriptEngine *)' to 'QScriptEngine::FunctionSignature'
Alors, comment l'écrire correctement?
Avez-vous essayé de faire ce que le message d'erreur original suggérait? – nwp
@nwp C'est ce que vous pouvez voir dans le dernier exemple. –
Le dernier exemple montre une fonte C folle de pointeurs vers la fonction membre. Ce n'est pas du tout ce que le message d'erreur a suggéré. – nwp