Voici le code:Aucune fonction de correspondance pour appeler - compilateur dit que je appel (QObject * &) lorsque l'appel est (QObject *)
void invokeQMLFunction2Arg(QObject * object, QString func, QVariant p1, QVariant p2) {
QMetaObject::invokeMethod(object, func, Qt::DirectConnection, Q_ARG(QVariant, p1), Q_ARG(QVariant, p2));
}
Ceci est l'erreur:
error: no matching function for call to 'QMetaObject::invokeMethod(QObject*&, QString&, Qt::ConnectionType, QArgument<QVariant>, QArgument<QVariant>)'
Qu'est-ce que Ai-je disparu? J'appelle invokeMethod()
avec un pointeur, mais le compilateur se plaint qu'il s'agit d'une référence de pointeur.
"J'appelle invokeMethod() avec un pointeur" Le "pointeur" auquel vous faites référence n'existe pas. Vous passez une référence à un pointeur, peut-être même une référence const ou une référence rvalue, mais quand même. Le compilateur est correct. La transmission d'arguments par valeur fonctionne en transmettant une référence const (ou une référence rvalue) qui est ensuite utilisée pour initialiser une copie fonction-locale de l'objet. –