martes, 1 de abril de 2025

no matching function for call to connect

Conectar un signal a un slot en Qt es tan simple como

connect(source,  &Source::Mysignal, destination, &Destination::slot);

Pero hoy recibi este error: No matching function for call to ‘MyClass::connect(QBluetoothDeviceDiscoveryAgent*&, , MyClass*, void (MyClass::*)(QBluetoothDeviceDiscoveryAgent::Error))’ 

En este caso el error es porque QBluetoothDeviceDiscoveryAgent tiene 2 miembros con el nombre "error", 

  • void QBluetoothDeviceDiscoveryAgent::error(QBluetoothDeviceDiscoveryAgent::Error error);
  • Error QBluetoothDeviceDiscoveryAgent::error() const;
Para desambiguar la llamada hay que usar un cast especificando la firma de tipado de la función
connect(discoveryAgent,
static_cast<void(QBluetoothDeviceDiscoveryAgent::*)(QBluetoothDeviceDiscoveryAgent::Error)>(&QBluetoothDeviceDiscoveryAgent::error),
this, &BlufiDeviceScanner::handleError);
view raw deambiguate.cpp hosted with ❤ by GitHub

No hay comentarios:

Publicar un comentario