이 코드 말한다 :이 오류가일치하는 함수를 호출하지합니다 - 컴파일러는 I 전화 (QObject를 *) 호출입니다 (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));
}
:
error: no matching function for call to 'QMetaObject::invokeMethod(QObject*&, QString&, Qt::ConnectionType, QArgument<QVariant>, QArgument<QVariant>)'
은 무엇 내가 빠졌어? 나는 포인터로 invokeMethod()
을 호출하지만 컴파일러는 포인터 참조라고 불평합니다.
"나는 포인터로 invokeMethod()를 호출합니다"당신이 참조하는 "포인터"는 존재하지 않습니다. 포인터에 대한 참조를 전달하고 있습니다. 아마도 const 참조 나 rvalue 참조 일 수도 있지만 여전히 그렇습니다. 컴파일러가 정확합니다. 값에 의한 인수 전달은 객체의 함수 로컬 복사본을 초기화하는 데 사용되는 const 참조 (또는 rvalue 참조)를 전달하여 작동합니다. –