" peut-être même au premier en enchainant les :: ? "
non, l´opérateur de résolution de portée ne marche pas " par niveau", il n´y a aucune idée de la portée " précédente", ou des limites des portées locales ; ça marche disons par " domaine". Les namespaces definissent des domaines ( namespace::data), les classes aussi ( class::staticData), etc. Il existe un domaine particulier qui est la portée globale obtenu sans spécifier de nom ( ::data) tout court
" utiliser le mots clef extern n´est pas la solution mise en oeuvre par le C++ puice qu´il n´est pas nécessaire de déclarer une instance réelle de ces objets où que ce soit."
ils sont définis dans les libs ( donc dans le code des libs), que tu linkes avec ton projet. De cette manière, l´objet existe DEJA dans le code que tu linkes, c´est pourquoi tu n´as pas à la créer toi meme. Par contre si tu faire ce mécanisme pour une donnée à toi, tu DOIS la déclarer qqpart ; et le extern ne sert qu´à renseigné les autres bouts de code que cette donnée existe, qqpart ( et le linker se debrouille pour savoir où).
" alors peut-être que c´est le trus du singleton, mais comme je n´ai pas la moindre idée de quoi il s´agit"
c´est un design pattern classique qui répond au probleme d´avoir une seule instance d´une classe donnée qui existe au sein du programme. Les objets qui s´y pretent bien sont en général des " managers" ; un truc qui manage tes textures par exemple, doit etre unique dans ton programme ( pour l´exemple..). Mais comme tu définis une classe, un programmeur pourrait tres bien créer 25 objets de ce type.. C´est pas ce que tu veux : le singleton permet de forcer cette contrainte d´unicité ( en gros pour une version simple : un pointeur membre static sur l´unique instance, un getter static pour l´unique instance, la forme canonique en privée à l´exception du destructeur ; la première fois que le getter est appelée, il crée l´instance unique -vu que LUI a acces au constructeur- et garde un pointeur dessus pour les fois suivante). Bon, ça sort du cadre de ta question de cin/cout mais c´est pour le principe. ( tu peux aussi facilement faire un template de singleton qu´il suffit d´hériter pour que n´importe quelle classe en devienne un...)