Ah ok, je me disais aussi ^^
On ne peut pas avoir une variable static bool _exist qu'on initialise à false en début de programme, puis quand on appelle getInstance, on fait ça :
if (!_exist)
{ _exist = true; _instance = new Instance();}
return _instance;
C'est le principe ?
En, fait, au lieu d'avoir des Message->sendMessage() dans mon code, je vais avoir des Message::getInstance()->sendMessage()

Mais je n'aurai pas de paramètre à passer dans les protos, c'est sûr. Et je peux utiliser un namespace pour alléger encore.

Sinon, pour mes messages, j'ai des ID d'objets associés à des pointeurs d'objets Receive, enregistrés dans un conteneur du gestionnaire de message. Ce conteneur contient donc les références nécessaires pour envoyer un message à tout objet qui s'est identifié.
Le conteneur map me parait tout à fait approprié à ça, vous en pensez quoi ? (
http://www.cplusplus.com/reference/stl/map/ )