que je veux transmettre mes objets en fonction de leur classe de base:
connect(pCaller, SIGNAL(sig2(const IBase &)), pReceiver, SLOT(slot2(const IBase &)));
Mais je reçois exécution erreur:Le passage de paramètres de classe abstraite par des références à des signaux et slots
QObject::connect: Cannot queue arguments of type 'IBase' (Make sure 'IBase' is registered using qRegisterMetaType().)
pourquoi j'ajouter:
qRegisterMetaType<IBase>("IBase");
Et obtenir un compilation erreur:
error C2259: 'IBase': cannot instantiate abstract class
Quelle est la meilleure façon de résoudre ce problème?
Je pense que vous recherchez ceci: http://stackoverflow.com/questions/17943496/declare-abstract-signal- in-interface-class/17943699 –
Il semble que ce soit impossible.D'après ce que je comprends, Qt nécessite un constructeur de copie pour les paramètres donnés par la référence const: http://stackoverflow.com/a/8457129/4149835 –
@VladimirBershov après avoir lu le réponse du lien que vous avez fourni J'ai ajouté l'argument 'Qt :: DirectConnection' à mon appel' connect' et cela semble fonctionner :) Mais je ne suis pas sûr que ce soit un "hack" ou en fait le bon chemin :) Merci –