Cacher privé constantes dans une ligne de l'espace de noms d'en-tête

J'ai quelques fonctions inline contenues dans un espace de noms dans un fichier d'en-tête et je ne suis pas actuellement en mesure de les déplacer dans un fichier cpp. Certaines de ces fonctions inline utiliser la magie des constantes, par exemple:

//Foo.h
namespace Foo
{
    const int BAR = 1234;

    inline void someFunc()
    {
        //Do something with BAR
    }
}

Cependant, je veux faire de ces constantes magiques privé - toutes les idées comment? Ma première pensée a été d'utiliser un espace de noms anonymes ainsi:

//Foo.h
namespace Foo
{
    namespace
    {
        //'private' constants here
        const int BAR = 1234;
    }

    inline void someFunc()
    {
        //Do something with BAR
    }
}

Toutefois, cela ne fonctionne pas et Foo::BAR est à la disposition de tout fichier cpp qui comprend Foo.h? Est-il un moyen de le faire sans créer de mise en œuvre de fichier cpp?

InformationsquelleAutor Rob | 2010-01-17