Un des problèmes du C++ est comme tu le fais remarquer dans ton article est que l'ordre d'initialisation des données globales n'est pas défini par la norme.
En particulier, si tu stockes ton singleton comme une donnée statique de Manager::get, tu tombes pile dans ce cas de figure.
C'est pour cela qu'en général, on recommande de stocker un singleton sur le tas et de l'instancier à la volée la première fois qu'on le récupère. De cette manière, on ne court pas le risque de ne pas pouvoir l'initialiser parce qu'il a par exemple besoin qu'un autre singleton soit déjà instancié.
De plus, placer le constructeur en protected reste tout aussi "safe" et de cette manière tu te reserves le droit de disposer d'un autre singleton d'un type dérivé de Manager.
# Initialisation du singleton
Posté par ggins . En réponse au journal Article sur la programmation C++. Évalué à 4.
En particulier, si tu stockes ton singleton comme une donnée statique de Manager::get, tu tombes pile dans ce cas de figure.
C'est pour cela qu'en général, on recommande de stocker un singleton sur le tas et de l'instancier à la volée la première fois qu'on le récupère. De cette manière, on ne court pas le risque de ne pas pouvoir l'initialiser parce qu'il a par exemple besoin qu'un autre singleton soit déjà instancié.
De plus, placer le constructeur en protected reste tout aussi "safe" et de cette manière tu te reserves le droit de disposer d'un autre singleton d'un type dérivé de Manager.