Envoyé par
Mongaulois
Y aura toujours d'autre manière (meilleur?!) de faire. Mais Qt (ou KDE? je ne sais pas qui viens en premier) as fait un choix que je trouve cohérent avec leur philosophie : simplifier la vie des programmeurs.
Si tu voie les class Qt comme une boite avec des entrée (slots) et des sorties (signaux), et que tu veut pouvoir interconnecter ces boites sans se soucier si chaque boite est dans la même thread ou non. Je trouve que le cow est un bon compromis. Si la partie partagé va être modifié, il y aura une copie. Sinon se sera comme un shared_ptr. Le développeur se pose moins de question.
Y as une autre subtilité, ou le cow est utile pour éviter une copie peut être inutile, mais qui me dérange un peu.
Si tu créé un signal avec une référence constante et qu'un slot d'un objet d'une autre thread est connecté, l'objet sera copié pour être envoyé dans l'event loop de la thread. C'est la copie qui me dérange... D'un côté il n'y as pas trop le choix comme l'objet sera utilisé à un autre instant, mais la copie est totalement implicite... D'ailleur c'est pour cela qu'utiliser une référence non const est interdit dans un signal ou un slot.