Citation:
Je dois ne pas comprendre quelque chose dans ton exemple, car si ta classe propose une interface listener, alors le listener qui s'y connecte n'a accès qu'aux méthodes de l'interface listener. Donc, le listener ne peut pas faire n'importe quoi, et si ta classe ne se modifie pas elle-même dans son implémentation de l'interface, alors le listener ne peut pas la modifier. Il pourrait toujours faire un cast dans le type dérivé, mais peut aussi faire un const_cast en C++.
Je parle de la donné que tu transmet. Le listener qui la reçois peut la manipuler et si on fait pas attention, il pourrais la modifier et impacter le fonctionnement.