le friend permet de donner accès à toutes les méthode private d'une classe à:
une autre classe
une méthode d'une autre classe.
A l'inverse je voudrais donner accès à une seule méthode pour:
une autre classe
une méthode d'une autre classe.
En fait j'ai un singleton que j'aimerais rendre disponible en lecture pour l'ensemble du code, mais en écriture pour certaines classes uniquement. J'ai constifier tout correctement, il faudrait simplement que j'ai:
public: const Manager& GetInstance();
Manager& GetInstance(); uniquement visible par 2 autres classes.
Comme ça je suis sur que personne d'autre n'aura l'idée de faire n'importe quoi avec ce manager
Existe t il une solution simple/peu couteuse? Ou est ce que je suis obligé de faire de l'héritage privée + using pour filtrer ce que je veux publier vers l’extérieur? (car si c'est trop complexe, autant utiliser le friend qui marche bien. Tant pis si les autres classes ont accès à trop de méthodes)
tu as une astuce pour te passer de l'utilisation d'un singleton dans la plus part des cas?
J'ai souvent entendu et lu que c'etait pas bien. Mais on a souvent besoin d'aller chercher des infos stocker dans une classe bien particulière et unique. Je vois pas comment m'en passer dans le cas présent. Peut être as tu un article à partager?
En tout cas merci pour le lien, je connaissais pas ce pattern!
En fait, on peut se passer de singleton dans la plupart des cas.
Le problème du singleton, c'est que ça ajoute une dépendance implicite et masquée. Pour résoudre ce soucis, on rend donc cette dépendance explicite, en passant directement l'instance à la fonction qui en a besoin. Une fois qu'on a fait ça, on n'a plus besoin que le singleton soit un singleton.
Si vous ne trouvez plus rien, cherchez autre chose.
je comprends que c'est faisable, mais je ne sais pas si c'est très pratique de passer voir stocker un pointeur vers l'instance d'une classe qui est utilisée dans beaucoup, BEAUCOUP d'endroit.
En l’occurrence je l'utilise dans 42 méthodes différentes réparties dans plus de 10 classes, et à l'avenir on devrait le trouver dans plusieurs autres méthodes. Je sais pas si l'utilisation d'un singleton n'est pas plus propre dans des cas extrèmes comme celui ci.
Disons que cela devient tellement extrême ce que tu décris que ça me fait peur. D'autant que tu as sous-entendu que son état est altérable depuis certains endroits et pas depuis d'autres -- donc problèmes potentiels de concurrence
Je m'autorise les singletons dans les cas suivants aujourd'hui
- système de logs, initialisation obligatoirement explicite - paramètres de l'application, initialisation obligatoirement explicite - initialisation de sous-modules partagés un peu tricky qui ont besoin de s'attribuer des ressources une fois pour toutes pour bosser, initialisation paresseuse
Je ne vois rien d'extrême dans ce que tu décris... 42 méthodes pour 10 classes, c'est un nombre ridiculement petit.
Le Singleton est une solution moche et sale, même dans les cas justifiés. (Dans mon moteur 3D je n'en ai qu'un seul, pour le log, avec initialisation et cleanup explicites).
Si vous ne trouvez plus rien, cherchez autre chose.
autoriser l'accès d'une méthode uniquement
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Si vous ne trouvez plus rien, cherchez autre chose.
Si vous ne trouvez plus rien, cherchez autre chose.